对象转型:

  

public class Animals {  //父类private String lei;private double weight;  //需要get,set一下,外界才可以调用public Animals() {}public Animals(String lei, double weight) {super();this.lei = lei;this.weight = weight;}public void Print() {System.out.println("动物种类" + lei);System.out.println("重量" + weight);}/*public void Sv () {System.out.println("你好");}*/public String getLei() {return lei;}public void setLei(String lei) {this.lei = lei;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}}

  

public class Dog extends Animals {  //子类private String shi;public Dog() {}public Dog(String lei, double weight,String shi) {super(lei, weight);   //引用的是父类里的lei,weight构造方法this.shi = shi;}public void Print () {  //重写父类里的方法System.out.println("动物种类是" + super.getLei()); //因为是继承,super之后就可以获取System.out.println("重量" + super.getWeight());System.out.println("狗的食物"+ shi);}public String getShi() {return shi;}public void setShi(String shi) {this.shi = shi;}}

  

public class Main {public static void main(String[] args) {//父类的引用指向子类对象Animals an = new Dog();  //实例化Animalsan.setLei("狗");  an.setWeight(15);/*an.Print();*///父类里的方法,要想设置食物,走下一步强转Dog dg = (Dog) an;  //子类Dog新增的属性shi和方法,不能直接访问,要强转dg.setShi("骨头");dg.Print();}}

效果:

    多态:

public class Test {public void Printf(Animals an) {  //多态if(an instanceof Dog) {  //如果an这个对象是一种狗,//instanceof关键字是用来判断变量an是不是这个类或是这个类的子类Dog x =(Dog)an;  //强转成狗x.Print();   //输出Dog的构造方法} else if(an instanceof Cat ) {Cat c = (Cat)an;  //强转成猫c.Print();//输出Cat的构造方法}else {an.Print();  //animals的方法}}

}

//多态Dog dog = new Dog("狗",15,"骨头");  //先实例化一个DogCat cat = new Cat("猫",5,"老鼠");Test t = new Test();t.Printf(dog);  //dog就是an的一种t.Printf(cat);

    静态(static):

public class Dog extends Animals {  //子类//static 静态private String name;private int age;public static  int num;  //staticpublic Dog() {  //给num一个构造方法num++;}public void Print () {System.out.println("这是第" + num + "只狗");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

//static 的静态利用Dog d1 = new Dog();d1.Print(); //输出第几只狗System.out.println(Dog.num);  //static 直接拿类名 . num 输出,输出第一个狗Dog d2 = new Dog();System.out.println(Dog.num); //输出第二只狗d2.Print();

    单例模式:

public class HelloWorld {private static HelloWorld helloworld;private HelloWorld () {}private int count;public static HelloWorld getinstance() {  //static的不用实例化,直接用if (helloworld == null ) {    //如果helloworld是空的话helloworld = new HelloWorld();  //给helloworld实例化}return helloworld;    //返回helloworld}public int getCount() {return count;}public void setCount(int count) {this.count = count;}}

//单例模式HelloWorld hw = HelloWorld.getinstance();System.out.println(hw.getCount());  //输出的返回值是为0,因为没有给其赋值HelloWorld hw2 = HelloWorld.getinstance();hw2.setCount(5);System.out.println(   hw.getCount());*///输出的是5,因为hw与hw2指向的位置相同

转载于:https://www.cnblogs.com/zuo72/p/7880135.html

对象转型(casting); 多态; static(静态);单例模式相关推荐

  1. java基础学习之对象转型

    对象转型(casting): 1)一个基类的引用类型变量可以指向其子类的对象 2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法) 3)可以使用引用变量instanceof类名,来判断该引 ...

  2. Java-对象转型(casting)

    对象转型(casting) 一个基类的引用类型变量可以指向其子类的对象 一个基类的引用不可以访问其子类对象新增加的方法(属性,方法) 可以使用 引用 变量instanceof类名 来判断该引用型变量所 ...

  3. java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程

    多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...

  4. java 父类转子类_Java多态,对象转型,和简单工厂模式。希望对您有帮助!

    各位读者老爷们大家好鸭~图图又来了,今天我们要说一下"多态". 怎么理解这两个字呢?可以理解为同一个引用对象的不同表现形态,即将父类的引用指向子类的对象.这是比较官方的书面解释,大 ...

  5. Java基础-day08-static·static静态代码块·final 关键字·多态·汽车设计综合案例·异常

    day09 1.static 是java中的一个关键字 用于修饰成员(成员变量和成员) 1.static是一个关键字 2.static可以修饰成员变量和方法,被修饰的资源就是静态资源 3.静态资源优先 ...

  6. Java之static静态对象

    static关键字:         1.概念:                     被该类的所有对象共享使用,不依赖于某个具体的对象,和对象无关,依赖于类,在内存中唯一只有一份 2.类的加载过程 ...

  7. Java转型,多态和契约设计

    类转型 -变量支持互相转化,例如 int a=(int) 3.5; -类型可以互相转型,但是只限制于有类型关系的类. -子类可以转换成父类,而父类不可以转换成子类 -子类可以继承父类所有资产,子类可以 ...

  8. chapter7 面向对象之向上转型、向下转型及多态

    文章目录 1.对象类型转换 1.1向上转型 1.2向下转型 2.多态 1.对象类型转换 将一个类型强制转换成另一个类型的过程被称为类型转换.本节所说的对象类型转换,是指存在继承关系的对象,不是任意类型 ...

  9. java基础学习总结——对象转型

    一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...

最新文章

  1. 安装node-sass运行报错 Module build failed: TypeError: this.getResolve is not a function at Object.loader
  2. 单招计算机专业综合测试,单招计算机专业模习题.doc
  3. Ring0和Ring3权限级
  4. spring之bean的作用域scope的值的详解
  5. SQL Server的Execute As与连接池结合使用的测试
  6. 是否非要用interface关键字来实现接口?
  7. 【常见笔试面试算法题12续集三】动态规划算法案例分析3 LIS练习题(最长上升子序列)
  8. java sdk下载_Java Sdk下载 | 保利威帮助中心
  9. centos7.5 su: 无法设置组: 不允许的操作(实测补充)(这是乱获取权限导致的,要注意权限问题)以及推荐文件操作
  10. python中软件包安装
  11. linux 挂载镜像文件命令,Linux mount命令系统挂载与镜像处理
  12. 一加3t刷机后还卡_一加3t刷机工具大全+3个ROM
  13. java实现日历打印项目
  14. TVS管的参数理解与选型
  15. php16进制转换源码,php16进制转换
  16. 7-14 电话聊天狂人 (25分)
  17. 为什么要创建对象(实例化)?
  18. C++ Style and Technique FAQ (
  19. GO冷门又重要的知识点(一)
  20. 老子《道德经》第十六章

热门文章

  1. 【简报】超棒的免费Web字体服务:Adobe Edge Web字体
  2. 黄聪:Loopup集合类笔记
  3. java多线程设计wait、notify、notifyall、synchronized的使用机制
  4. 初学者,你应当如何学习C++以及编程-转
  5. C语言 n的作业,C语言作业练习
  6. [Python] L1-018. 大笨钟-PAT团体程序设计天梯赛GPLT
  7. 蓝桥杯 ADV-75 算法提高 简单计算器
  8. 【note】软件体系结构(6-10章)
  9. L2-016. 愿天下有情人都是失散多年的兄妹-PAT团体程序设计天梯赛GPLT(广度优先bfs)
  10. 蓝桥杯 ADV-15算法提高 最大乘积