第三周总结

1,private关键字的特点

1)被private修饰的变量、方法,只能在本类中访问,外界类不能直接访问;

2)private修饰的成员变量以及成员方法,不能直接访问,但是可以通过公共的访问间接访问

3)private权限修饰符的范围最小,只能在本类访问

调用方法如下

public class Test6 {
    private int num=10;

    private void method() {
        System.out.println("method Demo");
    }

    public void show() {
        System.out.println(num);
        method();
    }
}
class Demo{
    public static void main(String[] args) {
        Test6 t=new Test6();
        t.show();

    }
}

2,什么是封装?

一个类中的成员变量(描述事物的属性)需要对外的隐藏,被private修饰,为了保证数据的安全性

对外需要提供公共的访问方式setXXX赋值和getXXX获取值;

3,冒泡排序的思想以及和兴代码体现

冒泡排序的思想:

两两比较,较大的往后放,最大值出现在最大的索引处;依次比较,可以得出排好序的数组

4,面向对象的思想特点?

1)解决实际问题上,更符合现实生活的思想行为习惯

2)让复杂的事情简单化

3)我们从执行者,变成指挥者

5  局部变量和成员变量的区别?

1,存储位置不一样,局部变量存储在栈内存中,成员变量存储在堆内存中

2,生命周期不同,局部变量随着方法的调用而存在,随着方法的调用完毕而消失,成员变量随着对象的创建而存在,随着对象的消失而消失

3,初始化不同,局部变量没有初始化值,在调用前必须赋值,成员变量有初始化值

4,在类中的位置不同,局部变量在方法中,成员变量在类中方法外

6  this和super的区别

使用方法

如果子类中出现非私有的同名变量,要引用时:
(1) 访问父类中的同名变量,用super
(2) 访问子类本类中的变量,用this

如果子类重写方法时,要引用父类中的已经定义好的功能时,用super.方法

如果子类中的构造函数需要指定父类中其他构造函数进行初始化,使用super(参数)的形式

如果子类中的构造函数中,需要引用父类中已经定义好的方法,使用super(参数)

主要区别

super的使用基本与this一致,主要区别在于

super代表父类对象的引用

this代表本类对象的引用

7  匿名对象的创建:

标准写法:   类名  对象名 =new 类名()

8  匿名对象的格式

  new 类名(); 直接在堆内存中开辟空间,使用完毕后就要被回收,可以节省内存;

9  匿名对象好处:

匿名对象可以作为参数传递

匿名对象可以节省内存空间,因为压根没有栈内存空间,不需要开辟,直接开辟堆内存空间

匿名对象一般适用于一次即可,使用完毕直接被GC回收

形式参数如果是一个类(引用类型),当调用该方法时,实际参数如何传递?

如果方法的形式参数是类,实际参数传递,需要传递当前类的具体类对象

public class Test7 {
    public static void main(String[] args) {
        StudentDemo sd =new StudentDemo();
        Student s=new Student();
        sd.method(s);
    }
}
class Student{
    public void study(){
        System.out.println("好好学习");
    }
}
class StudentDemo{
    public void method(Student s){
        s.study();
    }
}

10  this关键字的概念以及目的

this代表当前类对象的地址值引用Student s=new Student();---->空间地址值的引用

this的出现,为了防止局部变量隐藏成员变量,

this的用法:this.变量名:变量名:访问本类的成员变量

this.方法名();访问奔雷的成员变量

this()访问本类的无参构造方法

this(XXX)   访问本类的有参构造方法

11 构造方法的特点以及注意事项

构造方法的特点:

1)方法名和类名相同,

2)没有具体的返回值类型

2)没有void关键字

构造方法的目的:为了给类成员初始化

12  Phone p=new Phone();无参构造方法

1)栈内存开辟空间

2)堆申请空间

3)进行系统默认初始化,为成员变量

构造方法的注意事项:

1)当书写一个标准类的时候,没有给出任何构造方法,系统会默认提供无参构造方法

2)如果提供了一个类有的有参构造方法,系统就不会构造方法,所以,建议永远给出无参构造方法

3)构造方法是可以重载的

13  一个类成员的组成以及一个类的标准写法

一个类的组成

1)成员变量

2)构造方法

3)成员方法

一个类的标准的写法

1)成员变量私有化

2)午餐永远给出,有参构造根据题意要求

3)成员方法,根据题意要求(没有明确是否带参,是否有返回值,直接输出语句)

14  静态代码块,构造代码块,构造方法的优先级

每次执行构造方法之前,如果存在构造代码块,先执行构造代码块

静态代码块,随着类的加载而加载,类加载一次,静态代码块执行一次!

静态代码块 > 构造代码块 > 构造方法 static关键字的特点每次执行构造方法之前,如果存在构造

码块,先执行构造代码块 静态代码块,随着类的加载而加载,类加载一次,静态代码块执行一次!

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

静态只能访问静态

15  什么是继承,继承的好处

将多个类的共性内容,抽取到一个独立的类中,让这多个类和这个独立的类产生一种关系,这就是"继承关系"

继承的好处:

提高代码的复用性

提高代码的维护性

类和类的关系,是多态的前提条件

类和类之间只支持单继承,但是可以多层继承

子类继承父类,构造方法如何访问

构造方法是不能继承的,子类通过super()默认父类的无参构造方法

子类继承父类,子类所有的构造方法默认父类访问父类的无参构造方法:

实际开发中:

子类的无参构造方法默认父类的无参

子类的有参构造方法  直接访问父类的有参构造方法

子类继承父类,如果出现了和父类一模一样的方法,子类的方法会将父类的方法覆盖了,方法重写

16  方法重写和方法重载的区别

方法重写override:出现在继承中,描述的子类继承父类的时候,可能沿用父类的功能,而且使用自己的功能将父类的功能进行覆盖;为了防止子类具体体现出来的功能信息

方法重载ocerload:定义方法的时候,方法名相同,参数列表不同,与返回值无关,目的是保证这个方法他的扩展性问题,同一个方法,可以不同类的参数

17  继承关系中成员变量的访问问题

子类继承父类,如果子类的成员变量名称和父类的成员变量名称一致,分别访问即可;

18, 如果子类的成员变量和父类的成员变量名称一致;

1)现在子类的局部位置找,是否存在,存在就使用

2)如果子类的局部位置没有,在子类的成员变量中找,如果有,就使用

3)如果子类的成员变量没有,然后在父类的成员位置找,若存在,就使用

4)如果父类的成员位置也没,(父类没有它的父类),就报错,整个类中没有变量;

总之,遵循"就近原则"

19  继承关系中成员方法的访问问题

子类继承父类,成员变量(公共方法)名称不一致,分别调用

如果成员方法名一样,系统认为子类需要重写父类的方法,必须保证,子类的方法和父类一模一样

----->子类将父类的方法覆盖,方法重新,访问子类的功能;

如果创建对象的时候,创建父类对象

Fu fu =new Fu();

fu.方法名();访问父类的成员方法

20  final关键字

fianl表示最终的,无法更改的,状态修饰符;

修饰类,该类不能被继承

修饰变量,此时变量是一个产量

修饰成员方法,该方法不能被重写

21  多态的前提条件以及成员访问特点

多态的前提条件:

1)必须有继承关系

2)存在方法重写

3)父类引用指向子类对象  Fu fu =new Zi();向上转型

22  多态的成员访问特点:

1)成员变量:编译看左,也行看左

2)成员方法:编译看左,运行看右,存在方法重写

3)静态的方法:算不上重写,跟类相关的,编译看左,运行看左;

4)构造方法:分层初始化,先执行父类初始化,再执行子类初始化

23  多态的弊端

不能访问子类的特有功能

多态的格式Fu fu=new Zi();

解决方案

1)创建具体的子类对象

Zi zi=new Zi();

此方法的弊端:需要重新开辟堆内存空间,消耗内存空间;

2)向下转型

Zi  z=(Zi) fu;

z.特有功能();

不需要去单独开辟堆内存空间

24  多态的好处是什么

1)可以提高代码的复用性

2)可以提高代码的扩展性

如果在使用中出现ClassCaseException说明什么

这种方法代表的是"类转换异常"

使用多态操作向下转型的时候(使用不当),在堆内存中,信息和栈内存信息没有继承关系

Animal a=new Cat();(堆内存是猫,猫是动物)

Cat c=(Cat)a;(还原成猫,猫是猫)

Dog d=(Dog)a(语法没有问题,但是内存中有问题  猫是狗  )

25  什么是抽象类,抽象类的成员特点?抽象类如何实例化

有抽象方法(在具体的事物中才能具体的行为)的类一定是抽象类;

public abstract 返回值类型(参数类型 形参名称....);

抽象类的成员特点:

成员变量:可以是变量,也是自定义常量

成员方法:可以存在抽象方法,也可以存在非抽象方法

构造方法:可以存在无参/有参构造方法:分层初始化:先父类初始化,然后再子类初始化;

抽象类不能实例化:不能new对象

所以通过抽象类多态来实例化,通过具体的子类进行实例化

抽象类名 对象名 =new 具体的子类名();

26  什么是接口?接口和子实现类的关系是什么?书写格式

接口:体现的是一种额外的功能,设计李理念"like a"的关系

接口和子实现类的关系implements实现

27  abstract不能和哪些关键字使用

抽象类不能实例化,而且他是强制子类必须重新抽象方法:

abstract不能和static使用

static被类名访问,跟类有关,静态方法算不上方法重写;

不能和private使用

被private修饰的:只能在当前类访问

而abstracte修饰的方法需要被子类重写

不能和final使用

被final修饰的成员变量,不能被重写

abstract修饰的方法必须被子类重写:

接口的成员特点

成员变量

成员方法

构造ffa:jkou没有构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值