【转摘自:https://www.runoob.com/java/java-tutorial.html】(归纳总结)
之前有过C,C++,Python 的语言基础,最近项目需要重新开始熟悉Java。学习Java打算采用刷题的方式来进行,不懂的地方结合Java教程书和网上一些教程(比如菜鸟,w3school等)来弥补。
【Java语音学习】这一系列博文里都偏重基础知识,不会有很难的地方。算是记录下自己Java的入门过程。本篇主要是对java语言的特点做了下简单的回顾,下一篇开始进入正式刷题。
面向对象的三个主要特征:封装、继承、多态。
面向对象的其他特征:抽象、类、对象、实例、方法、重载。
封装是指一种将抽象性函式接口的实现细节部分给包装、隐藏起来的方法。通俗的来说,就是使用者只需要知道函数接口所实现的功能,而不需要知道怎么实现的。
封装的优点如下:
继承是指子类继承父类的属性(特征)及方法(行为),通过关键字extends实现。
类的继承格式如下:
class 父类{
}
class 子类 extend 父类{
}
Java支持以下几种继承类型:
extends是单一继承的典型代表。一个子类只能继承(extends)一个父类。
public class Animal{
private String name;
private int id;
public Animal(String myName, String myid){
//初始化属性
}
public void eat(){ //吃东西的具体实现 }
public void sleep(){ //睡觉方法的具体实现 }
}
public class Penguin extends Animal{
// 企鹅类继承动物类
// 拥有至少Animal,eat,sleep这三个属性
}
implements关键字可以变相使java具有多继承的特性。被继承的项为接口,一个类可以继承多个接口(接口之间用逗号相隔)。
public interface A{
public void eat();
public void sleep();
}
public interface B{
public void show();
}
public class C implement A,b{
//类C拥有A,B所有的方法。(接口中都是抽象的方法?)
}
super与this的用法类似,均用来指明对象。不同之处在于,super是用来访问父类的对象;而this用来访问自身的对象。
class Animal{
void eat(){
System.out.println("animal: eat");
}
}
class Dog extends Animal{
void eat(){
System.out.println("dog: eat");
}
void eatTest(){
this.eat(); //this调用自己的方法
super.eat(); //super调用父类的方法
}
}
public class Test{
public static void main(String[] args){
Animal a = new Animal();
a.eat();
Dog d = new Dog();
d.eatTest();
}
}
输出结果为
animal: eat
dog: eat
animal: eat
final关键字声明类可以把类定义为不能继承的最终类;或者将方法定义为不能被子类重写的固定方法。
声明类
final class 类名{ //类体 }
声明方法
修饰符(public/private/default/protected) final 返回值类型 方法名(){ //方法体 }
多态是指同一个行为具有多个不同的表现形式。在Java上可以理解为,父类被不同的子类继承后,子类分别重写了同个方法,这些方法在不同子类中的不同表现即为多态。
多态存在的三个必要条件:
Parent p = new Child();
使用多态方式调用方法时:先检查父类中是否有该方法,若没有,则编译错误;如果有,再去调用子类同名的方法。
当子类对象调用重写的方法时,调用的是子类的方法,而不是父类的方法。若想调用父类中被重写的方法,必须使用关键字super。
例子:
声明了父类Employee和子类Salary。实例中,实例化了两个Salary对象:一个使用Salary引用s,一个Employee引用e。
Salary s = new Salary();
Employee e = new Salary();
对s、e分别调用Employee和Salary中共有的方法mailcheck()时:
以上整个过程被称为虚拟方法调用,该方法被称为虚拟方法。Java中所有方法都能以这种方式表现,因此,重写的方法能在运行时调用,不管源代码中引用变量是什么类型。
一个类可以拥有多个变量及方法。
其中类型变量包括:
-局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。
-成员变量:成员变量是定义在类中,方法体之外的变量。
-类变量:也是定义在类中,方法体之外的变量,但必须声明为static类型。
Java的控制权限有以下4种:
定义静态常量时通常会这样定义:public static final int PAGE_SIZE=10
每个类都有至少一个构造方法。若没有定义,Java编译器将会为类自动加上一个没有参数的构造方法。
构造方法必须与类同名,参数的个数没有限制。一个类可以定义多个(参数)不同的构造方法。
对象是根据类创建的。创造对象需要以下三步:
1、声明:声明一个对象,包括对象名称和对象类型。
2、实例化:使用关键字new来创建一个对象。
3、初始化:使用new创造对象是,会调用构造方法初始化对象。