Java进阶的第一天

Java进阶的第一天大集合

第一章 复习回顾

如何定义类

  • 类的定义格式:
修饰符 class 类名{
    // 类中的五大成分。之前学习三个成分
    // 1.成员变量(属性)
    // 2.成员方法 (行为) 
    // 3.构造器 (初始化类的对象数据的)
}
  • 如何通过类来创建对象
类名 对象名称 = new 类名();

封装

  • 使用private关键字来修饰成员变量
  • 使用public关键字来修饰大多数成员方法

构造器

  • 概念:理解成构造方法也可以,通过调用一个构造器可以返回一个类的对象,构造器同时负责帮助我们把对象的数据(属性和行为等信息)初始化
  • 格式;
修饰符 类名(形参列表) {
    // 构造体代码,执行代码
}

this关键字

  • this出现在实例方法中,谁就调用这个方法,(哪个对象调用这个方法),this就代表谁

匿名对象

  • 概念:就是指没有名称的对象。创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。

  • 匿名对象的局限性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wuFp2SzO-1614439024282)(d:\我的文档\桌面\java s tudy\java进阶\day01【复习回顾,继承,抽象类】\笔记\imgs\匿名对象局限性内存图解.jpg)]

  • 说明:每使用一次new,在堆内存里都会创建一个新的内存空间,所以匿名对象只能针对对象使用一次时可以使用,当对象多起来的时候,它不再适用

继承

  • 继承引入:面向对象语言三大基本特征:

    封装(private)、继承(extends)、多态

    Java中的类是描述生活中的任何事物的。而在生活中任何事物之间必然会存在一些联系。那么我们在前面学习的过程中,仅仅只是在描述单个的事物,并没把握事物和事物之间的关系。

    接下来我们要研究的是如何通过Java中的类,展示所描述的事物和事物之间的关系。

    一般事物和事物之间会有继承的关系。在Java中我们的类就是描述事物的,那么也就是说我们的类之间也应该存在继承的关系。

  • 继承的好处:提高了代码的复用性

继承的相关规则:

  1. 并不是父类的所有内容都可以给子类继承的:

    子类不能继承父类的构造器,因为子类有自己的构造器。

    值得注意的是子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问而已,可以通过getter/setter方法访问父类的private成员变量。

    class Fu {
        public int num1 = 10;
        private int num2 = 20;
    
        public void show1() {
            System.out.println("show1");
        }
    
        private void show2() {
            System.out.println("show2");
        }
    
        public int getNum2() {
            return num2;
        }
    
        public void setNum2(int num2) {
            this.num2 = num2;
        }
    }
    
    class Zi extends Fu {
    }
    public class Demo03 {
        public static void main(String[] args) {
            Zi z = new Zi();
            System.out.println(z.num1);
    //		System.out.println(z.num2); // 私有的子类无法使用
            // 通过getter/setter方法访问父类的private成员变量
            System.out.println(z.getNum2());
    
            z.show1();
            // z.show2(); // 私有的子类无法使用
        }
    }
    
    
  2. Java中只能实现单继承,不支持多继承

    //一个类只能有一个父类,不可以有多个父类。
    class C extends A{} 	//ok
    class C extends A,B...	//error
    
  3. Java支持多重继承

解决继承后成员变量重名的情况

  • 明确this和super所指的变量情况即可

解决继承后成员方法重名的情况

  • 那么jvm将会调用子类中的方法,也叫方法重写

继承后构造器的特点

  • 首先我们要回忆两个事情,构造器的定义格式和作用。
    1. 构造器的名字是与类名一致的。所以子类是无法继承父类构造方法的。
    2. 构造器的作用是初始化对象成员变量数据的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一个super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。(先有爸爸,才能有儿子
  • 继承后子类构造器特点:子类所有构造器的第一行都会先调用父类的无参构造器,再执行自己

方法重写

  • 概念:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现
  • 使用@Override:
    • @Override:注解,重写注解校验!
    • 这个注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。

super(…)和this(…)

  • 其完成用法:
this.成员变量    	--    本类的
super.成员变量    	--    父类的

this.成员方法名()  	--    本类的    
super.成员方法名()   --    父类的

super(...) -- 调用父类的构造器,根据参数匹配确认
this(...) -- 调用本类的其他构造器,根据参数匹配确认

抽象类

  • 特征:抽象类的特征总结起来可以说是 有得有失

    有得抽象类得到了拥有抽象方法的能力。

    有失:抽象类失去了创建对象的能力。

  • 注意事项:

    1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
    2. 抽象类中,可以有构造器,是供子类创建对象时,初始化父类成员使用的。
    3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
    4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类,编译无法通过而报错。
    5. 抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。


2. 抽象类中,可以有构造器,是供子类创建对象时,初始化父类成员使用的。
3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类,编译无法通过而报错。
5. 抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值