华清远见-重庆中心-JAVA面向对象阶段知识点梳理

目录

1.对象和类

1.1对象Object

1.1.1创建对象

1.2类Class

1.2.1定义类

1.3成员变量、局部变量、静态常量

1.4构造方法

2.面向对象的三大特性

2.1封装

2.2继承

2.2.1重写Override

2.2.2重载Overload

2.3多态

3.访问修饰符

 3.1final

3.2abstract

3.3interface


1.对象和类

1.1对象Object

是某个类的具体实例

1.1.1创建对象

语法:  类名 变量名 = new 构造方法([参数])

Person person = new Person();

1.2类Class

是拥有相同属性和行为的对象的集合。是类的模板

1.2.1定义类

Object类:是所有类的父类。任何类都间接地继承了该类,但没有明确地使用extends体现出来。所有类都可以访 问Object类中的方法,或对其进行重写。

语法:   修饰符  class 类名{

    属性:定义变量

    行为:定义方法

}

public  class Person{
    //属性:定义变量
    String name;
    string sex;
    //行为:定义方法
    public void play(){
   System.out.println(name+"开始玩");
   
  }
}

1.3成员变量、局部变量、静态常量

--成员变量:定义在类中的变量,即类的属性。它有默认值。通过对象访问。

--局部变量:定义在方法中的变量。它没有默认值。只能在方法中赋值后才能使用。

--静态常量:特殊的成员变量,用final static修饰。它有默认值。通过类名访问。

public class Person {
    String  name;  /*成员变量*/
    final static String PERSON= "人类";  /*静态常量*/
    void info(){
        int age=23;   /*局部变量*/
        System.out.println("我叫"+name+",今年"+age+"岁,是一个"+PERSON);
    }
}

1.4构造方法

--构造方法是一种特殊的方法,方法名和类名一致,没有返回值部分

--在使用new关键字创建对象时,调用对应的构造方法

--每个类在定义后,都隐藏有一个无参的构造方法

--如果自定义了有参数的构造方法,无参数的构造方法就会失效。如果想要使用无参构造方法,就要 再写出来

--构造方法通常用于限制创建对象时携带的参数,初始化成员变量。

--构造方法之间都是重载关系,构造方法不能重写

--构造方法执行时,不一定会创建对象。如抽象类中有构造方法,但无法创建抽象类对象,只能在创 建抽象类的子类对象时,自动调用抽象类的构造方法

语法:  访问修饰符  类名(){

}

  //处于Person类里面
  public Person(String name) {
        this.name = name;
    }

2.面向对象的三大特性

2.1封装

将类中的属性用private修饰,能防止非当前类对其访问

封装步骤:

1.给类中的所有属性添加private访问修饰符

2.给每个属性添加getXX()方法用于读取属性值

3.给每个属性添加setXX()方法用于给属性赋值

public abstract class Person {
    private String name;
    private  int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void sing(Singer singer);
}

2.2继承

类A extends 类B,类A就是类B的子类,类A的对象就能访问类B中的非私有成员;

或接口A extends 接口B 

 向上转型:子类对象可以直接使用父类变量保存,也就是多态

Person p = new Person();
Object obj = p;

向下转型:

Person p =new Person();
//Person 必须是Singer的父类
Singer singer=(Singer) p ;

2.2.1重写Override

子类继承父类后,可以对父类中的非私有方法进行重写,达到拓展或重做的目的。

当需要在子类中调用父类的被重写方法时,要使用 super 关键字。

需注意:外壳不变,核心重写!

--方法名、参数列表、返回值必须相同

--访问权限不能比父类中的方法更严格

--不能抛出比父类中的方法更广泛的异常

public class Person {
    private String name;
    private  int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override   //重写toString()方法
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2.2.2重载Overload

在一个类中,某个方法在不同的参数下,表现不同的行为。同名不同参数

需注意:

--被重载的方法必须改变参数列表(参数个数或者类型不一样)

--被重载的方法可以改变返回值类型

--被重载的方法可以改变访问修饰符

--方法能在同一个类中或者在一个子类中被重载

2.3多态

在继承关系中,子类的对象可以保存贷父类的变量中。

多态通常应用于定义方法时,形参为一个父类或接口类型变量,实参可以是子类对象。

无法通过父类变量调用子类独有的方法,如果调用重写了父类的方法时,执行重写后的内容。

3.访问修饰符

 3.1final

final:用于修饰属性、类和方法

--修饰属性:变量变为常量,不能改变其中的值

--修饰类:类成为最终类,不能被继承

--修饰方法:方法成为 最终方法,不能重写

3.2abstract

abstract:用于修饰类和方法,表示抽象的

--修饰方法,方法成为抽象方法,没有方法体,同时该方法也一定要用abstract修饰,让其成为抽象类

需注意:

--抽象方法只能出现在抽象类中

--抽象类中可以没有抽象方法

--抽象类中有构造方法,但是该构造方法只会在new抽象类的子类对象时自动调用,抽象类不能创建自身对象

3.3interface

interface:用于定义接口的关键字,代替class

如果某个抽象类中全都是抽象方法时,可以将这个类改为接口

需注意:

--接口是一个完全抽象类,其中的方法都是public abstract修饰的抽象方法,没有方法体,其中的属 性都是public final static修饰的静态常量

--接口中没有构造方法,不能创建对象

--接口通过implements实现,实现它的类称为该接口的实现类

-- 一个类可以同时实现多个接口

--一个类实现了接口后,必须重写其中的抽象方法

/*定义艺人类,同时实现歌手和演员父接口(父类)*/
public class Person implements Singer,Performer {
    private String name;
    private String sex;

    public Person(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    @Override
    public void play(String movie) {
        System.out.println("代表电影《"+movie+"》");
    }

  

    @Override
    public void sing(String song) {
        System.out.println("代表歌曲《"+song+"》");
    }

    public void intruduce(String movie,String song){
        System.out.println("姓名:"+name);
        System.out.println("性别:"+sex);
        play(movie);
        sing(song);
    }
}

3.4static

static:可以修饰方法、属性或代码块,被修饰的内容称为静态成员

静态成员在类加载的时候就会保存到内存中,所以访问静态成员时,无需对象,可以直接通过类名访问

当某个属性或方法被高度重用时,可以将其定义为静态的,之后通过类名访问。还可以在类中定义静态代码块static{},在类加载时自动执行的代码块

需注意:

--静态方法中无法使用静态成员

--普通方法中科院使用静态成员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值