方法同名时:方法重载,方法覆盖

  同一类内的方法同名:方法重载

  子类与父类方法同名:方法覆盖

//在包person下
//Person.java
package person;public class Person {    public Person(String name, int age) {super();this.name = name;this.age = age;}protected String name;protected int age;public String getInfo() {return "姓名:"+name+",年龄:"+age+" ";}
}//Student.java
package person;public class Student extends Person {protected String school;protected String grade;Student(String name,int age,String school,String grade){super(name,age);this.school=school;this.grade=grade;}public String getInfo() {return super.getInfo()+"学校:" +school+" ,年级:"+grade;}
}//Demo.java
package person;public class Demo {public static void main(String[] args) {// TODO Auto-generated method stubPerson person =new Person("小张",18);System.out.println(person.getInfo());Student student=new Student("小李",20,"天津大学","大一");System.out.println(student.getInfo());}}

输出结果:

满足方法覆盖的原则:

  方法覆盖只存在于子类和父类之间(包括直接父类和间接父类)

  子类方法签名和返回值类型必须和父类一致(访问权限必须是大于等于父类的访问权限)

  父类的静态方法是不能被子类覆盖为非静态方法

  父类的非静态方法也不能被子类覆盖为静态方法

  父类的私有方法不能被子类覆盖


final

含义是最终的,final修饰变量时,表示该变量是常量,其值不可再变化

final修饰方法,表示该方法为终极方法,可以重载,但不能被子类重写,

final修饰类,表示该类是最终类,不可被继承

修饰变量是final用的最多的地方

1,修饰基本数据类型变量,其数值在初始化后不能更改

2,修饰引用数据类型变量,则在初始化后不能再指向另一个对象,但能修改原引用对象的属性值

package finaldemo;public class Demo {public final double PI=3.14;public final int[] arr= {1,2,3};public final String str = "Welcome to Java";public static void main(String[] args) {// TODO Auto-generated method stubDemo demo = new Demo();demo.PI=3.14159;               //errordemo.arr=new int[5];           //errordemo.arr[2]=4;                 //rightdemo.str="that's a error!";    //error
        System.out.println(demo.PI);for(int i=0;i<3;i++) {System.out.print(demo.arr[i]+" ");}System.out.println();System.out.println(demo.str);}}


对象转型

除了基础数据类型的转型之外,对象领域里面也有对象之间的转型

分为两种:向上转型:父类类型引用指向子类对象

向下转型:父类类型的引用变量强制转化成子类类型

向上:父类类型 父类引用变量 = new 子类类型();

   Person p = new Student();

系统自动完成,父类引用变量可以调用被子类重写的所有方法,但子类独有方法不可用

向下:

子类类型 子类引用变量 =(父类类型) 父类引用变量      //必须要有继承关系

使用instanceof运算符来检测一个对象是否是一个类的实例

//package Demo2 下
//Animal.java
package Demo2;public class Animal {public Animal(String name) {super();this.name = name;}String name;}//Cat.java
package Demo2;public class Cat extends Animal {String eyeColor;public Cat(String name,String eyeColor) {super(name);// TODO Auto-generated constructor stubthis.eyeColor=eyeColor;}}//Dog.java
package Demo2;public class Dog extends Animal {String furColor;public Dog(String name,String furColor) {super(name);// TODO Auto-generated constructor stubthis.furColor=furColor;}}//Demo.java
package Demo2;public class Demo {public static void main(String[] args) {// TODO Auto-generated method stubAnimal animal = new Animal("animal");Cat cat =new Cat("cat","blue");Dog dog = new Dog("dog","black");//判断animal,cat,dog是否为AnimalSystem.out.println("animal is Animal? "+ (animal instanceof Animal));System.out.println("cat is Animal? "+ (cat instanceof Animal));System.out.println("dog is Animal? "+ (dog instanceof Animal));animal=dog;System.out.println(animal.name);System.out.println("animal is Dog? "+ (animal instanceof Dog));}}

输出结果:


好累·········

转载于:https://www.cnblogs.com/tkj521Ya/p/11243012.html

Java自学笔记(13):【面向对象】方法覆盖,final关键字,对象转型相关推荐

  1. Java自学笔记——Java面向对象——04.抽象类、接口、内部类

    Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...

  2. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

  3. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  4. JAVA自学笔记23

    JAVA自学笔记23 1.多线程 1)引入: 2)进程 是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程: 单进程的计算机只能做一件事情,而现在 ...

  5. Java自学笔记总结04

    Java自学笔记04 一.Lambda表达式 1.1 函数式编程思想概述 1.2 体验Lambda表达式 1.3 Lambda表达式的标准格式 1.4 Lambda表达式的使用 1.5 Lambda表 ...

  6. JAVA自学笔记25

    JAVA自学笔记25 1.GUI 1)图形用户接口,以图形的方式,来显示计算机操作的界面,更方便更直观 2)CLI 命令行用户接口,就是常见的Dos,操作不直观 3) 类Dimension 类内封装单 ...

  7. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  8. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  9. JAVA自学笔记08

    JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...

  10. 廖雪峰Java自学笔记------Java简洁

    廖雪峰Java自学笔记------Java简洁 这是专门针对小白的零基础Java教程. 为什么要学Java? 因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Ja ...

最新文章

  1. RxJava 基础的使用
  2. druid seata 配置_五分钟体验分布式事务框架Seata
  3. ppt转html格式
  4. 我的服装DRP之开发感悟
  5. C# Json 序列化与反序列化一
  6. 190829课堂母版与子版
  7. 拼多多:三亿人在用,剩下十亿人在吐槽
  8. 制作种子怎么上传服务器,怎么制作BT种子 使用BitComet制作BT种子文件教程
  9. LiveLinkFce的Arkit与Character Creator动画曲线的对接
  10. TB6612FNG电机驱动替代方案
  11. 学习日记day31 平面设计 字体构图风格2
  12. Python OpenCV 正月十五轻松点,复习一下模板匹配吧
  13. 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务
  14. 有什么值得入手的蓝牙耳机品牌?2022年蓝牙耳机品牌排行榜
  15. 次世代教程——美队盾牌雕刻
  16. Unity的ScrollRect如何裁切粒子特效,以及如何使粒子特效显示在UI上
  17. 抖音创作规范_抖音创作内容调整提示怎么办?应该怎么解决
  18. 护理和计算机哪个专业好,护理专业考研的就业前景和方向
  19. 生活小妙招-通马桶(这是一篇有味道的博客~)
  20. 重学JavaSE 第4章 : 顺序结构、分支语句、循环结构、break, continue, return区别

热门文章

  1. python【OS操作系统库】Python的os模块大宝剑(全)
  2. wifi信息修改插件ios_这21款Android Studio插件,你不得不装
  3. python3 模块编写_python3 _pickle模块详解
  4. 用计算机绘制函数图象教案,信息技术应用 用计算机画函数图象教学设计(教案)...
  5. 重要的事情说三遍!网站如何改版才能最大限度降低影响率?
  6. 导致SEO优化排名不理想的三大因素,你踩雷了没?
  7. java改成c语言专业名词解释,求助大神!!!JAVA转换成C语言
  8. 2020年学什么计算机软件,2020年大学计算机软件专业排行榜
  9. Linux确定命令的执行时长,Linux 历史命令显示执行时间
  10. c语言中如何自定义sort,c – 如何重载自定义std :: sort比较函数?