java面向对象第三章

w 子类名();

3.2 方法名(子类对象);

3.3 方法的返回类型是父类

  访问修饰符 父类名 方法名([参数列表]){

  return 父类对象或子类对象;

  }

//子类,圆形
public class Circular extends Graph {
        private final double X=3.14;        //半径

        public Circular(double r){
            super(r);
        }

        public void getArea(){
            double m=(super.getLen()*X*X);
            System.out.println("圆的半径为"+super.getLen()+"\n面积为"+m);
        }
//子类,长方形
public class Rectangle extends Graph {
    private double weight;            //宽度

    public  Rectangle(double len,double weight){
        super(len);
        this.weight=weight;
    }

    public double getWeight(){
        return weight;
    }

    public void getArea(){
        double m=(super.getLen()*this.getWeight());
        System.out.println("长方形的长为"+super.getLen()+",宽为"+this.weight+"\n面积为"+m);
    }
//父类
public abstract class Graph {
    private double len;            //图形的边长

    public Graph(double len){
        this.len=len;
    }

    //获取长度
    public double getLen(){
        return len;
    }

    //抽象面向方法
    public abstract void getArea();
}

4、        多态中子类和父类之间的转换

a) 子类到父类的转换(向上转换)

父类 对象名 = new 子类();//自动进行转换

对象名.方法名([值]);

向上转换的使用规则【P72】:

l  父类引用指向子类对象时称为向上转换或转型(upcasting),自动进行类型转换

l  通过父类引用变量,调用的方法是子类覆盖(重写)或继承父类的方法【选择题1、2】

l  通过父类引用变量,无法调用子类特有的方法【选择题3】

b)父类到子类的转换(向下转换)——强制类型转换,还原对象的真实面目(具体是哪种子类)

                 父类 对象名 = new 子类();

对象名.子类方法();//编译有错误

应修改为:

父类 对象名 = new 子类();

子类 子类对象 =(子类)对象名;

子类对象.子类方法();

//父类
public abstract class Zhu {
    private String name;    //两者的姓名
    private String food;
    private String nation;
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    public String getNation(){
        return nation;
    }
    public Zhu(String name,String food,String nation){
        this.name=name;
        this.food=food;
        this.nation=nation;
    }
    public String getFood(){
        return food;
    }
    public abstract void print();
}

父类
//子类
public class Wang extends Zhu{
    private String habit;
    public Wang(String name,String habit,String food,String nation){
        super(name,food,nation);
        this.habit=habit;
    }
    public String getHabit(){
        return habit;
    }

    public void print(){
        System.out.println("我叫"+super.getName()+",来自"+super.getNation()+",喜欢吃"+this.getFood()+",爱好练"+this.habit);
    }
}

子类

a) 子类到父类的转换(向上转换)

父类 对象名 = new 子类();//自动进行转换

对象名.方法名([值]);

向上转换的使用规则【P72】:

l  父类引用指向子类对象时称为向上转换或转型(upcasting),自动进行类型转换

l  通过父类引用变量,调用的方法是子类覆盖(重写)或继承父类的方法【选择题1、2】

l  通过父类引用变量,无法调用子类特有的方法【选择题3】

b)父类到子类的转换(向下转换)——强制类型转换,还原对象的真实面目(具体是哪种子类)

                 父类 对象名 = new 子类();

对象名.子类方法();//编译有错误

应修改为:

父类 对象名 = new 子类();

子类 子类对象 =(子类)对象名;

子类对象.子类方法();

 父类

 子类

//子类
public class YueHan extends Zhu{
    private String habit;

    public YueHan(String name,String habit,String food,String nation){
        super(name,food,nation);
        this.habit=habit;

    }

    public String gethabit(){
        return habit;
    }

    public void print(){
        System.out.println("我叫"+super.getName()+",来自"+super.getNation()+",喜欢吃"+this.getFood()+",爱好是打"+this.gethabit());
    }
}
时间: 2024-10-16 11:43:19

java面向对象第三章的相关文章

疯狂java 讲义第三章练习题---画圆

public class PaintRound{ /** * @author Dream_e. * @version v1.0 */ private int r;//圆的半径 PaintRound(int r){ this.r = r; } public void paint(){ int y = 2*r;//y的最大值为半径的2倍 int x = 0; int c = 0; int z = 2;//坐标轴递减量. for(int j = y; j >= 0; j-=z){ x = getX(r

java面向对象编程(三)--类变量、类方法

1.什么是类变量? 类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. 如何定义类变量? 定义语法:     访问修饰符 static 数据类型 变量名; 如何访问类变量?     类名.类变量名 或者 对象名.类变量名 案例:有一群小孩玩堆雪人,不时有新的小朋友加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决. public class Demo113{ public static

java面向对象编程(三)--this

看一段代码:(Demo112.java),先了解为什么要使用this. /* this的必要性 */ public class Demo112{ public static void main(String []args){ Dog dog1=new Dog(2,"大黄"); Person p1=new Person(dog1,23,"刚子"); Person p2=new Person(dog1,24,"小龙"); p1.showInfo();

java基础(三章)

java基础(三章) 一.基本if结构 1.流程图 l  输入输出 l  判断和分支 l  流程线 1.1              简单的if条件判断 if(表达式){            //表达式为true,执行{}中的代码 } 1.2              简单的if条件判断 if(表达式){            //表达式为true,执行这里 }else{            //表达式为false,这行这里 } 说明:如果if或else后面,有且仅有一行代码,{ }可以省略

java面向对象的三种特征简述(随笔)

刚才有个刚学java的小菜问我面向对象的三种特性,我给他简单的讲了讲,以下是我十年来对java面向对象特性的简单阐述: 封装 封装就是把一个事物的属性和行为抽象出来,写到一个类里边,也就是按照事物的特性归类.也就是抽象事物的公共属性和方法. 继承 和咱们人类的继承差不多,就是老子有的东西儿子也有,只要儿子从老子那继承一下就OK了. 多态 就是同一个类里可以有相同的方法,但相同方法的参数是不同的.

20165233 Java第二、三章学习总结

2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二.三章 ch2 标识符与关键字 基本数据类型: 逻辑类型:boolean 整数类型:int.byte.short.long(注意:long型常量用后缀L来表示:且Java中没有无符号声明) 字符类型:char 浮点类型:float.double(float常量后面必须有后缀f或F ) 类型转换运算 输入.输出数据 数组 ch3 运算符与表达式 if条件分支语句 switch开关语句 循环语句(包括for语句.wh

Java核心技术第三章----Java的基本程序设计结构重难点总结

最近在看Java核心技术这本书,这里对第三章个人认为的重难点做一个总结.方便以后回顾,个人能力有限,本人菜鸟,大神勿喷,请大家多多指教. 一.位运算符 指定 A = 66(0100 0010); B = 22 (0001 0110)(这里为了简化说明支取一个字节即8位来运算) 位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能.如果要开发高效率程序,位运算符是必不可少的.位运算符用来对二进制位进行操作,包括:按位与(&).按位或(|).按位异或(^).按位取反(~).按

java:第三章

第三章: 1.选择结构 第一种: if(条件){ //代码块 } 第二种: if(条件){ //代码块1 }else{ //代码2 } 解释:如果条件结果为ture,那么执行代码块1 否则执行代码块2. 第三种: if(条件1){ //代码块1 }else if(条件2){ //代码块2 }···{ ··· }else{ //代码块3 } 解释:如果条件1结果为true,那么执行代码块1 如果条件1为false,那么将执行下一个条件 判断,依次重复上面的过程. 注意:判断字符串是否相同用 str

Java基础第三章(选择结构一)

一.if选择结构 语法: if(条件) {代码块 //条件成立时需要执行的代码} 基本的if选择结构示例: import java.util.Scanner;public class GetPrize{ public static void (String [] args){ Scanner input=new Scanner(System.in); System,out.println("输入张浩的Java成绩") int score=input.nextInt(); if(scor