java基础(对象转型)-写给自己的博客
class AnimalClass//声明一个动物类
{
public void printSuper()
{
System.out.println("printSuper:——>AnimalClass");
}
public void print()
{
System.out.println("print:——>AnimalClass");
}
}
class Dog extends AnimalClass//声明一个狗类,并继承自动物类 AnimalClass
{
public void printSub()
{
System.out.println("printSub:——>Dog ");
}
public void print()
{
System.out.println("print:——>Dog");
}
}
public class TestAnimals
{
public static void main(String[] args)
{
AnimalClass animal = new Dog();//声明一个子类Dog对象,并让其基类(animal)引用变量指向它'new Dog()'。
//animal.printSub();//编译器报错,这说明基类的引用不能访问子类的新增成员(对象和方法)
/*
D:\java\object>javac testanimals.java
testanimals.java:25: 找不到符号
符号: 方法 printSub()
位置: 类 AnimalClass
animal.printSub();
^
1 错误
*/
//为了解决上面的问题,只能进行对象的强制转型
Dog animalThree = (Dog)animal;
animalThree.printSub();
AnimalClass animalTwo = new Dog();
animalTwo.print();/*为什么这个会打印出 print:——>Dog 这个结果,而不是 print:——>AnimalClass 呢?这个就是动态绑定机制。*/
}
}
以下代码改自互联网
class Son extends Father {
public void method1(){
System.out.println("子类中的method1方法");
}
public void method2(){
System.out.println("子类中的method2方法");
}
}
//父类:
class Father {
public Father(){
System.out.println("Father中的this " + this);
}
public void init(){
//System.out.println("init方法");
this.method1();
this.method2();
}
public void method1(){
System.out.println("父类中的method1方法");
}
private void method2(){//注意此句中的private
System.out.println("父类中的method2方法");
}
}
//测试类:
public class ObjectClass {
public static void main(String[] args) {
Father fa = new Son();
fa.init();
//fa.method2();编译器报错,这说明fa引用虽然指向new Son()对象,但看到的只是继承过来的基类对象new Father()
/*
objectclass.java:54: method2() 可以在 Father 中访问 private
fa.method2();
^
1 错误
*/
/*不过我一直不明白,既然 看到的只是继承过来的基类对象new Father(),为何上面调用fa.init()方法是能对父类的method1()方法进行重写?希望高手拍砖释惑,谢谢~~!
*/
/*今天总算把上面这个问题弄清楚了。之所以会出现上面的问题,是因为“动态绑定(值绑定)”机制在“做窜”(更主要是自己学艺不精)。
*/
System.out.println("----------------------优美的分隔符-----------------------");
Son s = (Son)fa;//强制转型
s.init();
s.method2();//经强制转型后,编译通过
System.out.println("----------------------优美的分隔符-----------------------");
Son s2 = new Son();
s.init();
s.method2();
}
}
以上参考自《马士兵老师.尚学堂科技.JAVA.系列视频教程》以及互联网
分享到:
相关推荐
面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象。 面向对象是基于面向过程的。
java基础教程----精华版,不得不下载的资源
JAVA面向对象基础测试题-继承-封装-多态等测试题.docx
Java基础[03-面向对象]
详细描述了java基础中的数组与方法的应用技术,以及面向对象的过程思想,有助于java初学者的入门学习。
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java基础入门--教学课件--PPT
Java基础[03-面向对象]
坚持写博客第一周--java基础知识回顾--jvm类加载1(csdn)————程序
Java 基础核心总结 - Java 基础核心总结 - Java 概述 - 什么是 Java? - Java 的特点 - Java 开发环境 - JDK - JRE - Java 开发环境配置 - Java 基本语法 - 数据类型 - 基础语法 - 运算符 - Java 执行...
Java基础课程05-第五章-类和对象.ppt
传智播客_Java培训_毕向东_Java基础[03-面向对象]系黑马程序员_毕向东_Java基础视频教程
java基础--3.面向对象-1
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
第一章 Java 概述 第二章 Java 基础语法【上】 第三章 java 基础语法【下】 第四章 面向对象 【上】 第五章 面向对象 【下】
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
javacv官方最新全量jar包,javacv-platform-1.3.3-bin.zip,由于github国内下载较慢,此文件只作为分流,由于现在csdn没办法设置免费资源了,只能设置最低的2分,望大家见谅!
JAVA编程基础-05面向对象基础。这是我们单位的教程个人觉得挺实用的重点都有
Java 基础(1_8) - 面向对象