首页 > 编程语言 > 详细

初学java随笔

时间:2019-08-12 01:19:33      阅读:106      评论:0      收藏:0      [点我收藏+]

概念:对象的多种形态 
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();
  
 
 }
}

 

初学java随笔

原文:https://www.cnblogs.com/windsand/p/11337204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!