学习狂神说Java的关于面向对象的零零碎碎的小笔记

面向对象编程的本质;以类的方式组织代码,以对象的组织(封装)数据 oop
代码角度讲:现有对象后又类。类是对象的模板
非静态方法想要在另一个主类中操作的话需要在new一 下
构造器;{
    1.和类名相同(系统自动默认一个出来,但是看不见)
    2.没有返回值 public 类名
作用;
    1.new 本质在调用构造器方法
    2.初始化对象的值(依赖于构造器)
注意;
    1.定义有参构造器后,如果想使用无参数构造器,定义一个看得见的无参构造器
}
重载 overloading
1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载是一个类中多态性的一种表现。
2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型给它们的不同参数个数和参数类型给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
重写overriding (和静态方法无关、必须是public)
1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法 被重写  (Overriding) 。 在 Java 中, 子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不 动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又 称方法覆盖。

2) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表, 则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用 super 关键字,该关键 字引用了当前类的父类。

3)  子类函数的访问修饰权限不能少于父类的;

多态的注意;
1.多态是方法的多态,属性没有多态
2.父类和子类有联系,胡乱转换类型会一起转换类型异常(ClassCastException)
3.存在条件;继承关系,方法需要2.多态中成员的特点
多态成员变量:编译运行看左边
         Fu f=new Zi();

         System.out.println(f.num);//f是Fu中的值,只能取到父中的值

     2.多态成员方法:编译看左边,运行看右边

        Fu f1=new Zi();

        System.out.println(f1.show());//f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。
低精度向高精度转换(上转型,儿子转换成父亲)
高转低用强转型(zi)f1(下转性,父亲转换成儿子)
子类转换为父类,丢方法
java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用。
在Java中我们可以通过继承、向上转型的关系使用父类类型来引用它,这个时候我们是使用功能较弱的类型引用功能较强的对象,这是可行的。但是将功能较弱的类型强制转功能较强的对象时,就不一定可以行了。
 当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。例如:

       Father father = new Father();

       Son son = (Son) father;
(x instanceof y)判断x和y有没有父子关系
/
abstract    抽象{
    1.不能new这个抽象类,只能用子类去继承实现它
    2.抽象类中可以写普通的方法
    3.抽象法方法必须在抽象类中
    抽象类有构造器,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试官问,如果你不能对抽象类实例化那么构造函数的作用是什么?好吧,他可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使你没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话你的子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super(),Java中默认超类的构造函数。
    public abstract class xxx{ 
}
接口可以多继承 extends只能单继承,
普通类:只有具体实现
抽象类:具体实现和规范(抽象方法)都有
接口:只有规范,自己无法写方法
    public interface xxx{
    接口可以定义常量 public static final 的
    接口的定义的方法都是抽象的 默认的是 public abstract
    接口没有构造方法,也不能被实例化
接口需要实现类Tmpl   implements(可以继承多个接口)
    public class xxx implements xxx,xxx(体现了多继承性)
构造器
1.测试类中要使用定义类的变量或方法,要通过构造器来创建对象
Person a =new Person();//Person() 是一个定义类
new Person() 就是构造器
2. 在堆内存中开辟一块空间,
在测试类中 PersonTest.java
构造方法
1.一种特殊的方法,没有返回值类型
2.采用方法重载的方式给成员变量赋初始值
3.不用static修饰
4.构造方法的调用

只能放在首位,存储原理和栈一样
///
Error  错误
Exception 异常

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值