Java自学笔记(13):【面向对象】方法覆盖,final关键字,对象转型
方法同名时:方法重载,方法覆盖
同一类内的方法同名:方法重载
子类与父类方法同名:方法覆盖
//在包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关键字,对象转型相关推荐
- Java自学笔记——Java面向对象——04.抽象类、接口、内部类
Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...
- JAVA自学笔记24
JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...
- JAVA自学笔记22
JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...
- JAVA自学笔记23
JAVA自学笔记23 1.多线程 1)引入: 2)进程 是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程: 单进程的计算机只能做一件事情,而现在 ...
- Java自学笔记总结04
Java自学笔记04 一.Lambda表达式 1.1 函数式编程思想概述 1.2 体验Lambda表达式 1.3 Lambda表达式的标准格式 1.4 Lambda表达式的使用 1.5 Lambda表 ...
- JAVA自学笔记25
JAVA自学笔记25 1.GUI 1)图形用户接口,以图形的方式,来显示计算机操作的界面,更方便更直观 2)CLI 命令行用户接口,就是常见的Dos,操作不直观 3) 类Dimension 类内封装单 ...
- JAVA自学笔记07
JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...
- JAVA自学笔记21
JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...
- JAVA自学笔记08
JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...
- 廖雪峰Java自学笔记------Java简洁
廖雪峰Java自学笔记------Java简洁 这是专门针对小白的零基础Java教程. 为什么要学Java? 因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Ja ...
最新文章
- RxJava 基础的使用
- druid seata 配置_五分钟体验分布式事务框架Seata
- ppt转html格式
- 我的服装DRP之开发感悟
- C# Json 序列化与反序列化一
- 190829课堂母版与子版
- 拼多多:三亿人在用,剩下十亿人在吐槽
- 制作种子怎么上传服务器,怎么制作BT种子 使用BitComet制作BT种子文件教程
- LiveLinkFce的Arkit与Character Creator动画曲线的对接
- TB6612FNG电机驱动替代方案
- 学习日记day31 平面设计 字体构图风格2
- Python OpenCV 正月十五轻松点,复习一下模板匹配吧
- 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务
- 有什么值得入手的蓝牙耳机品牌?2022年蓝牙耳机品牌排行榜
- 次世代教程——美队盾牌雕刻
- Unity的ScrollRect如何裁切粒子特效,以及如何使粒子特效显示在UI上
- 抖音创作规范_抖音创作内容调整提示怎么办?应该怎么解决
- 护理和计算机哪个专业好,护理专业考研的就业前景和方向
- 生活小妙招-通马桶(这是一篇有味道的博客~)
- 重学JavaSE 第4章 : 顺序结构、分支语句、循环结构、break, continue, return区别
热门文章
- python【OS操作系统库】Python的os模块大宝剑(全)
- wifi信息修改插件ios_这21款Android Studio插件,你不得不装
- python3 模块编写_python3 _pickle模块详解
- 用计算机绘制函数图象教案,信息技术应用 用计算机画函数图象教学设计(教案)...
- 重要的事情说三遍!网站如何改版才能最大限度降低影响率?
- 导致SEO优化排名不理想的三大因素,你踩雷了没?
- java改成c语言专业名词解释,求助大神!!!JAVA转换成C语言
- 2020年学什么计算机软件,2020年大学计算机软件专业排行榜
- Linux确定命令的执行时长,Linux 历史命令显示执行时间
- c语言中如何自定义sort,c – 如何重载自定义std :: sort比较函数?