07-15

一 类与对象的创建

一个项目应该只存在一个main方法

this指代这个类

二 构造方法详解

  • 一个类就算什么都`不写,也会存在一个构造方法

  • 类中的构造器也称构造方法,是在进行创建对象的时候比u要调用的.并且构造器有以下两个特点:

    1. 必须和类的名字相同
    2. 必须没有返回类型,也不能写void
package com.oop;

public class Person {
    String name =;
    public Person(){//无参构造
        this.name="帅哥";
    }
    public Person(String name){//有参构造
        this.name=name;//
}
}

alt+insert 可以自动生成构造方法,但是笔记本上得关闭数字键盘,才能使用insert

[在csdn上发现alt+enter有很多种用途]((4条消息) idea万能快捷键(alt enter),你不知道的17个实用技巧!!!_最简单的东西,往往包含了最复杂的实现。-CSDN博客)

三 三大特性

引用类型的初始值都为null

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tIuKpyod-1626353033474)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210715080905749.png)]

alt+insert 也可以自动getset方法

3.1 类的访问控制权限

类的两种访问控制权限:公有和缺省

  • 公有权限使用public修饰符,可被所有包中的所有类访问;
  • 缺省权限没有修饰符,仅能被当前包中的其他类访问

3.2 类中成员的访问控制权限

  • private声明私有成员,该成员只能被当前类的成员访问,这是类希望隐藏的部分.

  • 缺省:当前类和当前包

  • proteceted :当前类及其子类或当前包中的类

  • public:可被所有类访问

    导入当前包中的其他类时,import可以省略

四 继承

在静态方法中是不能使用this预定义对象引用的*,即使其后边所操作的也是静态成员也不行.
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,*对象还不一定存在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ELqMnXWP-1626353033478)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210715091826980.png)]

  • ctrl+h 查看当前的继承关系

五 super

  • 使用super()调用父类的构造方法,并且子类的构造方法在第一行默认执行父类的构造方法.

声明了有参构造,但没有声明无参构造时,子类会报错,因为子类找不到父类中的无参构造方法(有参构造将系统隐藏起来的无参覆盖掉了);

super()与this()不能同时调用构造方法,因为没法否在第一行.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCgm00DE-1626353033480)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210715121742784.png)]

六 方法重写

静态方法:方法的调用只和定义变量时左边的类型有关

非静态方法:方法重写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lMYsq4sV-1626353033483)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210715134603130.png)]

override : 重写 , 覆写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TW8SK3p-1626353033484)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210715140015927.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LHuIPcto-1626353033486)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210715140857093.png)]

七 多态(重点)

//一个对象的实际类型是确定的,如new Student()\new Person()
Student s1=new Student();//但是引用类型是不确定的
Person s2=new Student();//父类的引用指向子类
Object s3=new Person();//父类的引用指向子类
/*对象能执行哪些方法,主要看对象左边的引用类型,和右边没关系*/
s2.eat();//s2为person类,person类中无eat()方法,因此报错
s1.eat();//无报错

7.1 多态需要注意的事项:

  1. 多态是方法的多态,属性没有多态

  2. 父类与子类,要有联系.无联系时强行类型转换,会出现转换异常! ClassCastException!

  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象!

    Farther f1=new Son();

7.2 方法不能重写的情况:

  1. static 方法,属于类,它不属于实列
  2. final 常量
  3. private 方法

八 instanceof与类型转换

Person stu=new Student();
System.out.println(stu instanceof Student);//true,stu是student类的实列
System.out.println(stu instanceof Student);//true



//高				低
Person stu=new Student();/*低转高,所以自动转换,不是强制转换
                            子类转化为父类,可能会丢失属于子类的一些方法*/
Person person=new Person();
(Student)person;//高转低,需要强制转换

九 static 关键字详解

package com.oop1;

public class Demo1 {
    {
        System.out.println("匿名代码块");
    }
    static{
        System.out.println("静态代码块");
    }

    public Demo1() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
        System.out.println("============================================");
        Demo1 demo2= new Demo1();

    }
}

静态代码块
匿名代码块
构造方法
============================================
匿名代码块
构造方法
    
从上面可以看出,当匿名代码块 静态代码块 构造方法都有时,会按照静态代码块-匿名代码块-构造方法这样的顺序执行;但是静态代码块只执行一次.
import static java.lang.Math.random//静态导入包
    
System.out.println(Math.random());//当我们嫌 Marh.radom()太长时,可以使用静态导入包
System.out.println(random());    

用 final 修饰的类,无法被继承,俗称断子绝孙

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值