Java基础总结回顾(一)—Java初学者几分钟巩固代码编程

1.权限修饰符

三种权限:

                                                private                        protected                        public

本类                                           可见                             可见                             可见

同包的其他类                           不可见                           可见                             可见

其他包的类                               不可见                         不可见                            可见

子类(不管是否同包)             不可见                            可见                             可见

如果没有显示说明是什么权限,则会使用包存取范围即只有同一个包中的类可以访问这个类的成员变量和成员方法(不同包的子类也无法访问),包存取范围是Java的默认权限

static静态方法同样遵循着权限修饰符的约束

2.类和对象

Java离不开类和对象,只有通过类和对象才能调用方法和属性。

1.this关键字

this关键字用语表示本类当前对象当前对象不是new创建出来的实体对象, 而是当前正在编辑的类。this关键字本身就是引用一个对象。

Java中可以通过“.”(英文中的句号)来调用属性和方法

如果局部变量和成员变量同名时,必须显式地使用this来引用成员变量;如果没有重名局部变量则可以直接引用成员变量,而不必显式地使用this.来引用

2.构造方法

(1)没有返回值

(2)必须和类同名

(3)Java隐式地提供无参构造方法

3.静态方法

(1)不能使用this关键字

(2)静态方法不可以直接调用非静态方法,需要先实例化非静态方法所属类的对象,然后通过对象调用方法,典型例子就是main函数

(3)局部变量不能使用static关键字

(4)主方法必须使用static关键字

(5)只有内部类可以使用static关键字,只有static内部类才能有static成员【注:在5当中和继承相对比说明】

4.new关键字

Java中没有指针一说,通过new创建的对象其实都是类的引用每个对象都是独立的,在内存中占据独立的内存地址,并且每个对象都有自己的声明周期。当对象的声明周期结束后,会被Java的垃圾回收机制自动回收内存。

在Java语言中,尽管一切都可以看作对象,但真正的操作标识符实际上是一个引用,举例说明:

例:

一个People类的引用可以使用以下代码

People tom; // 通常一个引用不一定需要有一个对象关联起来

如果要关联一个对象则要使用new关键字:

People tom = new People;

其中:

 类名        引用           对象的实体

People      tom    =    new People();

实际上真正的对象是“new People()”这段代码,为了方便开发者保存、调用对象,才有语法创建一个People类型、名为tom的引用变量。tom实际就是一段内存地址,用来标记"new Peopple"对象在内存中的位置。因为内存地址又长又乱,很难让人记住,所以Java语言利用引用变量帮助开发者标记内存地址。

当对象被设置为null时,将消亡

3.封装、继承和多态

总结:常用封装、继承和多态尽量少用

封装的体现在方方面面,Java最基础的特性就是封装,例如私有类,接口等

继承、多态

继承主要利用特定对象之间的共有属性,关键字extends,格式 子类 extends 父类。

 (1)Object父类

Java中所有的类都继承自Object,只是不必显式的写出

而Object的常用方法equals()和toString()也继承给了所有的类。

1.getClass()

返回对象执行时的Class实例,然后使用此实例调用getName()获取类的名称,语法如下:

getClass().getName()

2.toString()

将一个对象返回字符串形式,它会返回一个String对象实例。通常会重写toString()为对象提供一个特定的输出模式当对象转换为字符串,或与字符串连接时,将自动调用重写的toString()

3.equals()

“==”比较的是两个对象引用的内存地址是否相等,即是否为同一个对象;equals()比较的是两个对象的实际内容

(2)向上转型和向下转型

向上转型:子类对象变为父类对象

向下转型:父类对象变为子类对象

向上转型时安全的,因为由具体的类型转换为一个较为抽象的类型是可以的,且在向上转型的过程中,父类不能调用子类独有的属性和方法;而向下转型是不安全的,因为父类对象可以指向任意的子类,而不确定是否指向转型的子类,需要借助强制类型转换,前提是:这个父类对象要先引用这个子类对象:

Bird bird = new Pigeon();

Pigeon pigeon= (Pigeon) bird;

如过父类对象的不是子类对象的实例,会发生ClassCastExeption异常,用instanceof在强制转换之前检查,完善上面的转换:

Bird bird = new Pigeon();

if( bird instanceof Pigeon )

Pigeon pigeon= (Pigeon) bird;

instanceof的返回值是一个布尔类值。

(3)方法的重载(Overloading)和重写(Overriding)

重载:

1.方法名必须相同

2.参数类型不同,构成重载

3.参数顺序不同,构成重载

4.参数个数不同,构成重载

5.重载的访问可以拥有不同的权限等级

6.既可以重载实例方法,也可以重载静态方法

重写:

1.方法名相同

2.参数列表相同

3.返回值相同

4.访问权限不能小于父类

5.只能重写实例方法,不能重写静态方法

(4)final关键字

变量声明为final:变量不能再被改变

方法声明为final:不能被子类修改

如果一个方法被声明为private,子类将无法方位这个方法,所以将一个方法定义为private被隐式地声明为final,无须再将一个定义为private的方法再定义为final

(5)抽象类和接口

抽象类:

使用abstract将类定义为抽象类。抽象类除了被继承,没有任何意义。

使用abstract定义的方法称为抽象方法。抽象类没有任何方法体,这类没有任何意义,除非它被重写。

如果要定义一个抽象方法,则必须将其类定义为抽象类

接口:

接口是抽象类的延伸,是纯粹的抽象类,因为其中的所有方法都没有方法体

定义接口方法可以省略public abstract,例:

public interface Paintable {

void draw(); // 可省略public abstract

}

public:仅限于用于接口在与其同名的文件中被定义

特点:

(1)接口中,方法必须被定义为public或abstract形式,其它权限修饰符不被Java编译器认可。即,Java默认接口中的方法为public。

(2)接口中定义的任何字段(变量)都自动是public static final

原因:

static是因为接口要实现在没有任何实例的情况下被访问,final是因为让接口中的变量可以任意被访问而不被改变,public是为了让所有类都可以访问,这都是让接口有更多的复用性而设计的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YTC_040518

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值