代码块 继承作业



1:代码块是什么?代码块的分类和各自特点?

答:代码块是用{}括起来的代码;
    局部代码块:用来限定变量的生命周期,出现在main方法中
    构造代码块:类中的成员为止,{代码块}用来给对象的数据进行初始化,每次执行构造方法之前,都要执行构造代码块
    静态代码块:类中的成员位置,static{代码块}
                作用:静态是和类有关系的,随着类的加载而加载,给类进行初始化,在类中只加载一次!

2:静态代码块,构造代码块,构造方法的执行流程?

答:静态代码块>构造代码块>构造方法

3:继承概述

答:将多个类的共性内容,抽取到一个独立的类中,独立的类和多个类就产生一种关系:extends,继承

4:继承的好处

答:1,提高了代码的复用性
   2,提高了代码的维护性
   3,让类与类之间产生一种关系,继承是多态的前提

5:Java中继承的特点

答:1,只支持单继承,不支持多继承
    2,能够支持多层继承

6:Java中继承的注意事项?以及我们什么时候使用继承?

答:1,子类不能继承父类的私有成员(成员变量、成员方法)
    2,子类不能继承父类的构造方法,但是通过关键字super可以间接去访问
    假设有俩个类A类和B类,如果A是类的一种或B类是A类的一种,就可以使用继承来实现。

7:继承中的成员访问特点

A:成员变量
在子类方法中访问一个变量
B:成员方法
在测试类中通过子类对象去访问一个方法
答:A:子类中的成员变量和父类中的成员变量名称不一致,分别输出即可
       一致:
      a:先在子类中的成员方法的局部位置查找,有就输出
      b:没有就访问子类的成员位置,有就输出
      c:没有就访问父类的成员位置,有就输出
      d:没有就会报错
    B:this.成员方法;//访问的是本类的成员方法
       super.成员方法;//访问的是父类的成员方法

8:继承中构造方法的执行流程?假如父类没有无参构造方法,子类应该怎么办?

 答:父类进行初始化后,子类进行初始化,子类中的构造方法会默认访问父类中的无参构造;
     1,在父类中提供无参构造 2,使用super关键字去访问父类中的有参构造(写在第一句话)3,用this关键字去调用其他的构造方法,间接地访问父类的带参构造

9:面试题:
方法重写和方法重载的区别?方法重载能改变返回值类型吗?
Overload
Override

this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。

答:方法重载:在同一个类中,方法的名字相同,但从参数的个数,参数的类型或者返回值不同,不能改变返回值类型
    方法重写:是在继承中,子类重写了父类中的方法,方法名,参数类型,参数个数必须相同。
    this表示本类,super表示父类

10:
使用继承去写一个猫狗案例
自己分析出他们的成员
成员变量
成员方法
等等

答:
/*
 * 猫狗案例继承版
 * 具体分析:
 * 猫:
 * 成员变量:name,age,color
 * 构造方法
 * 成员方法:set()/get()。。
 * 特有功能:玩毛线..
 * 狗:
 * 成员变量:name,age,color
 * 构造方法:无参有参
 * 成员方法:set()/get()...
 * 特有功能:看门
 * 
 * 猫和狗种的共性内容抽取为一个独立的类:
 * 动物类:
 * 成员变量:name,age,color
构造方法
成员方法:set()/get()。。

狗继承动物类
猫继承动物类
 * */
class Animal extends Object{
//成员变量
private String name ;
private int age ;
private String color ;
//无参构造...
public Animal() {
super();
}

public Animal(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}


//提供set()/get()方法...
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;
}


public String getColor() {
return color;
}


public void setColor(String color) {
this.color = color;
}

public void sleep(){
System.out.println("累了就要睡觉....");
}
}


//定义猫类
class Cat extends Animal{


public Cat() {
super();
}


public Cat(String name, int age, String color) {
super(name, age, color);
}

public void playGame(){
System.out.println("猫玩毛线....");
}

}


//定义狗类
class Dog extends Animal{


public Dog() {
super();
}


public Dog(String name, int age, String color) {
super(name, age, color);
}

public void lookDoor(){
System.out.println("狗看门....");
}
}


//测试类
public class ExtendsTest {
public static void main(String[] args) {
//测试猫类
Cat c = new Cat() ;
c.setName("Tom");
c.setAge(5);
c.setColor("黑白");
System.out.println(c.getName()+"---"+c.getAge()+"---"+c.getColor());

//有参构造
Cat c2 = new Cat("Tom", 3, "灰色") ;
System.out.println(c2.getName()+"---"+c2.getAge()+"---"+c2.getColor());

//狗类自己测试!
}
}

11:猜数字小游戏练习。
通过API学习并使用Math类的random()方法。

答:
/**
 * 猜数字的小游戏:
 * 分析:
 * 1)使用Math先产生一个随机数,被猜的数据
 * 2)使用键盘录入:录入一个数据,(我们自己要猜的数据)
 * 3)拿键盘录入的数据和被猜的数据进行比较
 * 大了
 * 小了
 * 中了
 * 4)让猜的机会多走几次,死循环
 * whilte(true){
 * 中了之后,可以跳出循环!结束条件
 * }
 * */
        //Math方法产生的随机数是double类型[0.0-1.0)之间
public static void main(String[] args) {
//1)产生一个随机数[0.0-1.0)
int number = (int) ((Math.random()*100)+1) ;
//System.out.println(number);

while(true){
//2)可以键盘录入一个数据
Scanner sc = new Scanner(System.in);

//录入并接收数据
System.out.println("请您输入一个数据(0-100):");
int guessNumber = sc.nextInt() ;

//做一个判断
if(guessNumber>number){
System.out.println("你要猜的数据"+guessNumber+"大了");
}else if(guessNumber<number){
System.out.println("你要猜的数据"+guessNumber+"小了");
}else{
System.out.println("恭喜您,猜中了");
break ;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值