Java的学习笔记(11)对象 六

简介: 对象11:方法重写重写:需要有继承关系,子类重写父类的方法!方法名必须相同参数列表必须相同修饰符:范围可以扩大,范围可以扩大不能缩小:public>protected>default>private抛出异常:范围可以被缩小但是不能扩大;classNotFoundException -->Exception(大)重写,子类的方法和父类的方法一致;方法体不同为什么需要重写父类的功能,子类不一定需要或者不一定满足! Alt + Insert --> overridepackage oop.Demo06;public class Application { publ

对象11:方法重写

重写:需要有继承关系,子类重写父类的方法!

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大,范围可以扩大不能缩小:public>protected>default>private
  4. 抛出异常:范围可以被缩小但是不能扩大;classNotFoundException -->Exception(大)

重写,子类的方法和父类的方法一致;方法体不同

为什么需要重写

  1. 父类的功能,子类不一定需要或者不一定满足! Alt + Insert --> override
package oop.Demo06;
public class Application {
    public static void main(String[] args) {
        //静态方法和动态方法区别很大
       //静态方法:static,静态方法 方法调用的之和等号左边的、定义的数据类型有关
        //非静态:重写
        A a = new A();
        a.test();    //A=》test
        //父类的引用指向了子类
        B b = new A();   //动态 子类重写了父类的方法
        b.test();    // !!! 注意动态时:A=》test       (静态时候:B=》test)  
    }
}
package oop.Demo06;
//重写的都是方法的重写,和属性无关
public class B {
    public  void test(){
        System.out.println("B=》test");
    }
}
package oop.Demo06;
//继承关系
public class A extends B{
    @Override  //重写,注解:有功能的注释
    public void test() {
        //super.test();
        System.out.println("A=》test");
    }
}

对象12:多态

动态编译,可扩展性变得更强

多态,即同一方法根据发送对象的不同而采用不同的行为方式

一个对象的实际类型是确定的,但可以指向对象的引用类型很多(父类,有关系的类)

多态的存在条件

  1. 有继承关系
  2. 子类重写父类方法
  3. 父类引用指向子类的对象

注意:

  1. 多态是方法的多态,属性没有多态性
  2. 父类和子类,有联系 类型转换异常!ClassCastException! 类型转换异常
  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象!
  4. 不能重写的:
    static 方法,属于类,它不属于实例
    final 常量;
    private方法等
package oop.Demo07;
public class Application {
    public static void main(String[] args) {
        //一个对象的实际类型是确定的
        //new Student();
        //new Person();
        //可以指向的引用类型就不确定了;父类的引用指向子类
        //Student 能调用的方法都是自己的或者继承父类的
        Student s1 = new Student();
        //Person 父类型,可以指向子类,但是不能调用子类独有的方法
        Person s2 = new Student();
        Object s3 = new Student();
        s1.run();      //son
        s2.run();       //son
        //对象能执行哪些方法,主要看对象等号左边的类型,和等号右边关系不大
        s1.eat();
        ((Student) s2).eat();   //子类重写了父类的方法   此类写法,是因为person类无eat方法,强转
    }
}
package oop.Demo07;
public class Person {
    public void run(){
        System.out.println("run");
    }
}
package oop.Demo07;
public class Student extends Person{
    @Override
    public void run() {
        System.out.println("son");
    }
    public void eat(){
        System.out.println("eat");
    }
}
package oop.Demo07;
public class Person {
    public void run(){
        System.out.println("run");
    }
}
相关文章
|
3天前
|
安全 Java 编译器
java中类与对象回顾总结-2
java中类与对象回顾总结
14 3
|
3天前
|
Java 编译器
java中类与对象回顾总结-1
java中类与对象回顾总结
14 3
|
15天前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
2天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
3天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
3天前
|
Java
从源码出发:JAVA中对象的比较
从源码出发:JAVA中对象的比较
12 3
|
4天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
26 1
|
10天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
30 4
|
13天前
|
Java 编译器
【Java探索之旅】解密构造方法 对象初始化的关键一步
【Java探索之旅】解密构造方法 对象初始化的关键一步
17 1
|
13天前
|
Java
Java对象和类研究
Java对象和类研究
9 0