知识点
一、final 最终的
可以修饰属性、方法、类
1、final修饰的属性,表示常量,初始化以后值不能改变。final修饰
引用数据类型的变量,引用地址不能改变。
2、final修饰类,不能被继承。比如:String
3、final修饰方法,不能被重写

 public class FinalDemo {
public static final String NAME="张三";//静态常量
public static void main(String[] args) {
final int n=100;//常量
//n=200;//final修饰的常量,复值以后不能改变
final Object obj=new Object();//所有类的父类
// o=new Object();
}
 public  class Foo {
public final void function(){
System.out.println("方法被调用");
}
 public class TestFoo extends Foo/*extends Stringextends Foo*/{
//经过final修饰的方法不能被重写也无法继承
/*@Override
public void function() {
}*/ public static void main(String[] args) {
Foo foo=new Foo();
foo.function();
}

二、多态
多态:同一个引用类型,使用不同的实例而执行不同操作 。
父类引用指向子类对象。
多态步骤:
使用多态实现思路
编写具有继承关系的父类和子类
子类重写父类方法
使用父类的引用指向子类的对象
多态语法:
向上转型
Pet pet = new Dog();
实现多态的两种形式:
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态

 package day20190304;

 /**
* 狗类,继承Pet类
*
* @author Administrator
*
*/
public class Dog extends Pet {
private String strain; public Dog() {} public Dog(String name, int health, int love, String strain) {
super(name, health, love);
this.strain = strain;
} public String getStrain() {
return strain;
} public void setStrain(String strain) {
this.strain = strain;
} public String printInfo() {
return getName() + " " + getHealth() + " "
+ getLove() + " " + strain;
} @Override
public void eat() {
setHealth(this.getHealth()+3);
System.out.println("吃饱了,健康值增长为"+getHealth());
}
/**
* 狗接飞盘
*/
public void catchingFlyDisc(){
this.setLove(this.getLove()+5);
this.setHealth(this.getHealth()-10);
System.out.println("玩一会,健康值减少10,亲密度增加5");
}
}
 package day20190304;

 /**
* 企鹅类,继承Pet类
*
* @author Administrator
*
*/
public class Penguin extends Pet {
private String sex; public Penguin() {
} public Penguin(String name, int health, int love, String sex) {
super(name, health, love);
this.sex = sex;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public String printInfo() {
return getName()+" "+getHealth()+" "
+getLove()+" "+sex;
} @Override
public void eat() {
setHealth(this.getHealth()+5);
System.out.println("吃饱了,健康值增长为"+getHealth());
}
/**
* 企鹅游泳
*/
public void swimming(){
this.setLove(this.getLove()+5);
this.setHealth(this.getHealth()-10);
System.out.println("玩一会,健康值减少10,亲密度增加5");
}
}
 package day20190304;

 /**
* 父类,宠物类
*
* @author Administrator
*抽象类
*/
public abstract class Pet {
private String name;
private int health;
private int love; protected Pet() {
} protected Pet(String name, int health, int love) {
this.name = name;
this.health = health;
this.love = love;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getHealth() {
return health;
} public void setHealth(int health) {
this.health = health;
} public int getLove() {
return love;
} public void setLove(int love) {
this.love = love;
}
/**
* 显示所有信息
* @return
*/
public abstract String printInfo();
/**
* 宠物吃东西
*/
public abstract void eat();
}
 package day20190304;

 /**
* 主人类
*
* @author Administrator
*
*/
public class Master {
/**
* 给宠物喂食
*
* @param pet
*/
public void feed(Pet pet) {
pet.eat();
} /**
* 和宠物玩耍
*
* @param pet
*/
public void play(Pet pet) {
// System.out.println(pet instanceof Penguin);
if (pet instanceof Penguin) {//判读是否为企鹅类型
Penguin penguin = (Penguin) pet;
penguin.swimming();
} else if (pet instanceof Dog) {
// 将父类对象还原为子类对象,强制类型转换
Dog dog = (Dog) pet;
dog.catchingFlyDisc();// 调用狗自己的方法
}
} /*
* public Pet getPet(String petNo){ return new Dog(); }使用多态优化返回值类型
*/
}
 package day20190304;

 public class TestPet {

     public static void main(String[] args) {
// 父类引用指向子类对象空间
// Pet pet=new Dog();
Dog dog = new Dog("来福", 80, 80, "田园犬");
Penguin penguin = new Penguin("球球", 80, 80, "Q仔");
// 主人对象
Master master = new Master();
master.play(dog);// 和宠物玩耍
master.play(penguin); master.feed(dog);// 给宠物喂食 // System.out.println(dog.printInfo()); } }

final修饰符与多态的更多相关文章

  1. final修饰符,多态,抽象类,接口

    1:final关键字(掌握)    (1)是最终的意思,可以修饰类,方法,变量.    (2)特点:        A:它修饰的类,不能被继承.        B:它修饰的方法,不能被重写.      ...

  2. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...

  3. java中接口的概念及使用(补充final修饰符的使用)

    接口 初期理解,可以是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 class 用于定义类 interface 用于定义接口 接口定义时,格式特点: 1.接口中常见的 ...

  4. Java final 修饰符知识点总结

    final从字面上理解含义为“最后的,最终的”.在Java中也同样表示出此种含义. final可以用来修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. 1. fin ...

  5. Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  6. 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误

    在Java中修饰符总共有一下几种: 1.访问控制修饰符    分别有:public private protected,缺省 2.其它修饰符      分别有:abstract,final,stati ...

  7. private static final 修饰符

    java修饰符分类修饰符字段修饰符方法修饰符根据功能同主要分下几种 1.权限访问修饰符 public,protected,default,private,四种级别修饰符都用来修饰类.方法和字段 包外 ...

  8. 类成员(static)和final修饰符

    在Java类里只能包含成员变量.方法.构造器.初始化块.内部类(包括接口.枚举)5种成员,类成员是用static来修饰的,其属于整个类. 当使用实例来访问类成员时,实际上依然是委托给该类来访问类成员, ...

  9. C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态

    C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal接口的成员默认访问修饰符是public C#修饰符--类 ...

随机推荐

  1. 将VSCode添加到右键

    https://www.cnblogs.com/Rexcnblog/p/8046371.html https://www.jianshu.com/p/b49002fa10a7 @echo Off :S ...

  2. react useRef()函数

    "ref"对象是一个通用容器,其current属性是可变的 保存dom function Test() { const t = useRef(null); useEffect(() ...

  3. meat标签

    1.文档兼容模式的定义 Edge 模式告诉 IE 以最高级模式渲染文档,也就是任何 IE 版本都以当前版本所支持的最高级标准模式渲染,避免版本升级造成的影响.简单的说,就是什么版本 IE 就用什么版本 ...

  4. 1、js基础内容

    js基础内容 1. 编辑器 编译环境 浏览器 编辑软件 sublime DW H5Build Atom ==[注]尽可能多的去使用编辑器去编辑代码.== Html+css ==JS 逻辑== 比作建设 ...

  5. CString中 format、trimLeft和trimright、trim 和FindOneOf用法

    1.format 可以帮助各种类型转换成CString. a. int 转 CString CString str; int number = 4; str.Format(_T("%d&qu ...

  6. php 字符串截取,支持中文和其他编码

    function.php //使用方法 $content= mb_substr($content,0,25,'utf-8'); /** * 字符串截取,支持中文和其他编码 * @static * @a ...

  7. LINUXJI积算器bc

    hling@hling:~$ bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundatio ...

  8. The way to unwind the stack on Linux EABI

    I. probe the stack frame structure The original idea is to unwind the function call stack according ...

  9. JSON.parse()和JSON.stringify()的解析与用途

    JSON.parse()和JSON.stringify()的解析与用途 1.parse用于从一个字符串中解析出json对象 如: var str = '{"name":" ...

  10. python扫描端口脚本

    # -*- coding:utf8 -*- # # Python: 2.7.8 # Platform: Windows # Authro: wucl # Program: 端口扫描 # History ...