zoukankan      html  css  js  c++  java
  • 7.27Java入门--->第六节 7.28面向对象--->第七节

    1、方法声明和调用

    方法--也叫函数,类的功能单元,方法必须定义在类中

    语法--修饰符  返回值类型 方法名(参数类型 参数名){方法体 return返回值}

    2、参数的传递

    基本数据类型只有一种传递方式:值传递

    将实际参数的副本传入方法内部,实际参数不会受方法内部的影响

    引用数据类型:地址传值

    直接影响实参的值

    String 数据类型不可变

    3、重载方法

    同一个类中,同名,参数类型不同,参数个数不同

    与返回值类型无关,只看参数列表

    4-10面向对象

    4、类和对象

    类:是抽象的,是一个模板

    对象:实实在在的

    5、对象属性和方法

    class 修饰类

    属性:类中的成员变量

    默认初始化:对象创建时,会有初始值,不同的属性有不同的初始值

    显示初始化:创建完对象之后,使用对象的引用给属性赋值

    方法:类中的成员方法(动作)

    补充:局部变量只能定义在局部

    6、Java内存管理和垃圾回收

    jvm来进行垃圾回收

    垃圾对象:内存中不再使用的对象

    垃圾回收GC:jvm自动释放对象所占用的内存的机制

    如果对象没有被引用变量引用时,称为垃圾,那么当前对象所占的内存空间含快被JVM回收

    system.GC 督促JVM垃圾回收,但是没必要

    7、类的封装(隐藏)

    面向对象特性之一

    该隐藏的隐藏,该暴露的暴露

    public:公共的,共有的(可以用来修饰方法,类,在任何地方都可以访问)

    peivate:私有的(只能在本类中使用

    protected:受保护的,可以修饰属性和方法(能被本包的类访问,其他包只能是此类的子类可以访问)

    default:默认的,缺省的,包内作用域(只能被同一个包内的类访问)不可以挎包

    封装

    1.属性私有化

    2.提供公共的get,set方法

    信息的封装和隐藏

    1.Java中通过对数据声明private,在提供public方法实现对属性的操作

    2.隐藏一个类中不需要对外操作的细节

    3.使用者只能通过对事先制定好的方法访问数据,可以方便加入控制逻辑,限制属性的不合理操作

    4.便于修改,增加代码可维护性

    8、this关键词

    1.在方法内部使用,表示这个方法所属对象的引用

    2.在构造器内部使用,表示构造器正在初始化的对象

    3.this表示当前对象,可以调用属性,方法和构造器(this调用构造器时必须在第一行,至少有一个构造器不使用this)

    4.this用来区分局部变量和实例变量

    9、声明和使用构造器

    1.注意事项与功能

    创建对象的,给对象赋初值

    具有与类名相同的名称

    不生命返回值类型

    不能被static、final、synchronized、abstract、native,不能返回return;

    2.根据参数将构造器分类

    1.系统默认提供一个空构造(默认的构造器和类的修饰符一样)

    2.可以显示一个或多个构造器

    3.Java中一个类至少有一个构造器

    4.一旦显示构造器,系统不再提供默认构造器

    5.一个类中可以有多个重载构造器

    6.构造器不可以被继承

    编写俩个类,TriAngle和TestAngle,其中TriAngle中声明私有的底边长base和高height 
    同时声明共有的方法访问私有变量,另一个类中使用这些方法计算三角形的面积

    我没明白老师您是啥意思,我怎么也想不明白要表达啥意思

    附我的理解

    public class TriAngle {
        private double base;
        private double height;
    
        public double getBase() {
            return base;
        }
    
        public void setBase(double base) {
            this.base = base;
        }
    
        public double getHeight() {
            return height;
        }
    
        public void setHeight(double height) {
            this.height = height;
        }
    
        public TriAngle() {
        }
    
        public TriAngle(double base, double height) {
            this.base = base;
            this.height = height;
        }
        public double sum(){
            System.out.println(base*height*3.14);
            return base*height*3.14;
        }
    }
    //
    //
    //
    //
    import java.util.Scanner;
    
    public class TestAngle {
        public static void main(String[] args) {
            TriAngle triAngle=new TriAngle();
            Scanner scanner=new Scanner(System.in);
            triAngle.setBase(scanner.nextDouble());
            triAngle.setHeight(scanner.nextDouble());
            triAngle.sum();
        }
    }

    10、包的管理

    package:当前类属于哪一个包

    包名各个部分小写

    全限定名,全类名

    作为Java源文件的第一条语句,表示当前文件定义的类所在的包

    2.作用

    防止类的重名

    控制访问权限

    通常将功能相近的模块组织在同一个包中,用包来划分层级

    使用定义在不同包下的类,使用import导包

    在其他包下使用可以使用全限定名(com.xian.dao.user user=new com.xian.dao.user)

    练习:
          (1)定义Person类,有4个属性:String name; int age; String school;  
             String major 
         (2)定义Person类的3个构造方法:
    Ø  第一个构造方法Person(String n, int a)设置类的name和age属性;
    Ø  第二个构造方法Person(String n, int a, String s)设置类的name, age 和school属性;
    Ø  第三个构造方法Person(String n, int a, String s, String m)设置类的name, age ,school和major属性;
         (3)在main方法中分别调用不同的构造方法创建的对象,并输出其属性值。

     代码

    public class Person {
        String name;
        int age;
        String school;
        String major;
        public Person() {
        }
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public Person(String name, int age, String school) {
            this.name = name;
            this.age = age;
            this.school = school;
        }
        public Person(String name, int age, String school, String major) {
            this.name = name;
            this.age = age;
            this.school = school;
            this.major = major;
        }
    }
    public class TestAngle {
        public static void main(String[] args) {
            Person person=new Person("Anny",18);
            System.out.println(person.name+" "+person.age);
            Person p2=new Person("Vega",18,"hulunbeierCallage");
            System.out.println(p2.name+" "+p2.age+" "+p2.school);
            Person p3=new Person("ROG",19,"anbo","??");
            System.out.println(p3.name+" "+p3.age+" "+p3.school+" "+p3.major);
        }
    }
  • 相关阅读:
    HTML总结
    Java 基础知识总结 (三、运算符)
    关于JS 事件冒泡和onclick,click,on()事件触发顺序
    Java 基础知识总结 (四、String)
    Java 基础知识总结 (二、基本数据类型)
    websocket实例(显示文件导入处理进度)
    Java 基础知识总结 (一、标识符)
    Java Calendar 注意事项
    Ajax调用SpringMVC ModelAndView 无返回情况
    关于Ajax load页面中js部分$(function(){})的执行顺序
  • 原文地址:https://www.cnblogs.com/springxian/p/13383570.html
Copyright © 2011-2022 走看看