java面向对象考试

今天考试考试的内容 面向对象
在这里插入图片描述

父类中被private全限修饰的的方法是不可以被子类重写的

在这里插入图片描述

private修饰后可以在本类中直接使用,不需要get/set方法调用
根据面向对象的的思想的要求,所有的字段都必须私有化
3.分析下面代码,如果想在控制台中输出“B类的test()方法”则在主函数中应该填入()

public class Coo {
    public void test(){
        System.out.println("A类test()方法");
    }
}
class  B extends  Coo{
    public void test (){
        System.out.println("B类的test方法");
    }

    public static void main(String[] args) {
       **new B().test();**
    }
}
``Coo a = new B();
        a.test();`//第二种写法

在这里插入图片描述

封装的特性:a.封装变换隔离 b.提高了重用星c.提高了安全性
private修饰只是封装的一种体现

4.对于static的描述正确的是
A.静态修饰的成员变量和成员方法会随着类的加载而加载
B.静态修饰的方法是不可以访问静态成员变量的*//没有对象无法访问*
C.静态修饰的成员可以被整个类对象共享
D.静态修饰的成员变量和成员方法随着类的消失而消失
5.在这里插入图片描述

子类抽象不可重写父类方法,要么重写哟啊莫添加抽象类
7.在这里插入图片描述
构造函数:
作用:一般用来初始化成员属性和成员方法的,即new对象产生后就调用了对象了属性和方法。构造函数是对象已建立就运行,给对象初始化,就包括属性,执行方法中的语句
一个对对象建立,构造函数只运行一次而一般函数可以被该对象多次调用
构造函数的特点
1.函数名与类名相同
2**.不用定义返回值类型**(不同于void类型返回值,void是没有具体的返回值类型;构造函数连类型都没有的
3.不用写return语句(返回值都没有,也就不需要return语句了)

package javastudy;
 
public class ConfunDemo {
    public static void main(String[] args) {
        Confun c1=new Confun();            //输出Hello World。new对象一建立,就会调用对应的构造函数Confun(),并执行其中的println语句。
    }
}
class Confun{        
    Confun(){        //定义构造函数,输出Hello World
        System.out.println("Hellow World");
    }
}

8在这里插入图片描述

抽象类的使用
1.当父类的默写方法不确定是,可以使用abstract关键字修饰给方法【抽象方法,用abstacta 来说修饰该抽象类】
2.父类是镜子类所拥有的的共同的属性进行抽取这些方法和属性中,有些是已经实现了,可有些还没有确定,我就可以将其定义为抽象,在后面对于子类进行具体化,这样的抽象类就诞生了
例如定义动物父类其中动物的名称和年龄都已经明确了,但是动物的叫法还没有确定。此时就可以将动物叫定义为抽象方法

public class AbstractDemo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }
}

// 这就是一个抽象类
abstract class Animal {
    String name;
    int age;

    // 动物会叫
    public abstract void cry(); // 不确定动物怎么叫的。定义成抽象方法,来解决父类方法的不确定性。抽象方法在父类中不能实现,所以没有函数体。但在后续在继承时,要具体实现此方法。
}

// 抽象类可以被继承
// 当继承的父类是抽象类时,需要将抽象类中的所有抽象方法全部实现。
class cat extends Animal {
    // 实现父类的cry抽象方法
    public void cry() {
        System.out.println("猫叫:");

    }
}
复制代码

用abstract修饰的类,就是抽象类,用abstract修饰方法,就是抽象方法
抽象方法不能有方法主体格式如下:
abstract voidXXX();
4.抽象类不能被实例化,因为抽象类中的方法没有具体化,这是一个不完整的类所以实例化也是没有意义的;
5.抽象类不一定要包含abstract 方法该类必须声明为abstract类

9.在这里插入图片描述

内部类, 静态内部类, 局部类, 匿名内部类的解析和区别
众所周知,外部顶级类的类名和文件名相同,只能yogapublic和default。而内部类是指在外部类的内部在定义一个类,类名不许要和文件名相同,内部类可以是静态的static ,也可以用default ,protected 和private进行修饰
在这里插入图片描述
内部类是一个编译是的概念,一旦变编译成功,就会成为完全不同的两个类,分别是 一个是类另外的一个是¥的类
所以内部类的额成员变量、方法名可以和外部类相同。
内部类的作用
1。内部类可以很好的实现隐藏,一般的类不具有private于protected权限,但是内部类就可以
2.内部类的外围拥有所有元素的访问权限
3.可实现多重继承(让多个内部类分别继承多个其他的类,是外部类同时具有或多更多的其他的类)
4.可以避免修改接口而实现同一类中的两种同名方法的调用(外部类继承,让内部类实现接口)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成员内部类可以直接使用外部类所有的成员和方法,即使是private修饰的,而外部诶要想访问内部类额成员和方法,就要通过新建内部类对象类获得,要注意内部类不能包含static的变量和方法。因为成员内部类要先创建一个外部类才能创建自己的
在这里插入图片描述
成员内部类不能有static修饰的成员,但是却语序定义常量
在这里插入图片描述
这里是引用
作为非静态内部类中的一种特殊形式,非静态内部类的所有权限对局部内部类同样成立。局部内部类不仅可以访问外部的所有成员,还可以访问方法体的局部变量,但是必须是final所修饰的局部变量

在这里插入图片描述

这里的额localVariable会变红,提示需要给的localVariabl变量添加final修饰。
解析:这里是作用域的问题,在方法method()执行完成后,局部变量value就失效了,而 new Inner()产生的in对象还在Obj的引用中,这样的话对象就访了一个不存在的变量,是不允许的,Iner还存在,在外面和后续调用局部变量的时候,这个局部比变量就已经失效了,但是问啥加上final还可以继续使用?这里java采用了一种copy Local variable 的方法实现,定义为final的变量copy一分存到局部内部类中,后续使用维护这对项的生命周期,可以继续访问。在这里插入图片描述
在这里插入图片描述
//1.7(要) 和1.8的区别

10.在这里插入图片描述

1.构造函数名与类名完全相同
2.构造函数无返回值类型
3.构造函数分为有参和无参
4.可以对构造函数进行重载(在同一个类中定义多个函数名相同,参数不同的函数叫做函数重载)
5.当我们定义类后不声明任何的构造函数,则java虚拟机会昂我们创造一个空参构造,假如我们声明了一个有参构造,java虚拟机就不会帮我们创建一个对象,那么就必须在类总声明一个空参构造。s

在这里插入图片描述
12.在这里插入图片描述
在这里插入图片描述

第二行报错 类型都是会有强制转换,最后到会double层面

在这里插入图片描述

public static final int MALE =1;接口中只常量方法
public abstract 返回值 method();j接口总只定义抽象方法

  1. 在这里插入图片描述
  2. 在这里插入图片描述
  3. 16.在这里插入图片描述在这里插入图片描述
    18.在这里插入图片描述
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值