加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

初学java随笔

发布时间:2020-12-15 08:25:17 所属栏目:Java 来源:网络整理
导读:概念:对象的多种形态? 1.引用多态 父类的引用可以指向本类的对象? 父类的引用可以指向子类的对象 2.方法多态 父类型的引用可以指向子类型的对象 Person person = new Student();Student student = new Student(); 思考:两个不同类型的引用person和student

概念:对象的多种形态?
1.引用多态

父类的引用可以指向本类的对象?
父类的引用可以指向子类的对象

2.方法多态

父类型的引用可以指向子类型的对象

Person person = new Student();
Student student = new Student();

思考:两个不同类型的引用person和student的区别在哪里?

student01可以访问对象中所有的非私有的成员

person01只能访问对象中从父类继承下来的非私有成员

  • 引用类型转换

向上类型转换(隐式/自动类型转换),是小类型到大类型的转换?
向下类型转换(强制类型转换),是大类型到小类型?
instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

自动类型转换

子类型的引用自动转换为父类型引用

Student student = new Student();
Person person = student;

强制类型转换

父类型的引用强制转换为子类型引用

Person person = new Student();
Student student = (Student)person;

思考:下面强转有问题吗?

Person person = new Student();
Teacher teacher = (Teacher)person;

有问题,会抛出类型转换异常

  • 类型检测运算符 instanceof

功能:instanceof可以检测引用所指向的对象的类型

//检测person引用所指向的对象类型是否为Teacher
boolean is01 = person instanceof Teacher;
System.out.println("is01 = " + is01);    
//
boolean is02 = person instanceof Student;
System.out.println("is02 = " + is02);

程序输出结果 is01 = false, is02 = true

?

实例:

package com;
public class Circle extends Graph{
?public Circle(double a) {
??super(a);
?}
?
?@Override
?public double getArea() {
??// TODO Auto-generated method stub
??return Math.PI*a*a;
?}
?
?@Override
?public double getPerimeter() {
??// TODO Auto-generated method stub
??return 2*Math.PI*a;
?}
?
?public void myCircle() {
??System.out.println("我是圆形");
?}
}
?
?
package com;
public class Rectangle extends Graph{
?private double b;
?public Rectangle(double a,double b) {
??super(a);
??this.b = b;
?}
?
?@Override
?public double getArea() {
??// TODO Auto-generated method stub
??return a*b;
?}
?
?@Override
?public double getPerimeter() {
??// TODO Auto-generated method stub
??return (a+b)*2;
?}
?
?public void myRectangle() {
??System.out.println("我是矩形");
?}
}
?
?
package com;
public class Test {
?/*
? * Java虚拟机执行代码是,会把类文件加载到虚拟机生成类文件(类中有哪些属性和行为)
? * 调用方法时,更具分配的空间调用?还是根据引用调用?
? * ?调用方法是看类对象,不看空间
? * */
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??Graph graph = new Circle(1);
??
??graph.getArea();
??
?
?}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读