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);
    }
}

 

posted @ 2020-07-28 20:39  Spring_Xian  阅读(368)  评论(0编辑  收藏  举报