【Java学习】0 JAVA中重要的基本概念

JAVA中重要的基本概念

【转摘自:https://www.runoob.com/java/java-tutorial.html】(归纳总结)

缘由

之前有过C,C++,Python 的语言基础,最近项目需要重新开始熟悉Java。学习Java打算采用刷题的方式来进行,不懂的地方结合Java教程书和网上一些教程(比如菜鸟,w3school等)来弥补。

【Java语音学习】这一系列博文里都偏重基础知识,不会有很难的地方。算是记录下自己Java的入门过程。本篇主要是对java语言的特点做了下简单的回顾,下一篇开始进入正式刷题。

一种面向对象的语言Java

面向对象的三个主要特征:封装、继承、多态。

面向对象的其他特征:抽象、类、对象、实例、方法、重载。

封装

封装是指一种将抽象性函式接口的实现细节部分给包装、隐藏起来的方法。通俗的来说,就是使用者只需要知道函数接口所实现的功能,而不需要知道怎么实现的。
封装的优点如下:

  • 1、减少耦合性。可以防止类的代码和数据被外部数据随机访问修改。
  • 2、代码便于控制。功能变动时,代码定义者只需修改自己的实现代码,而不用修改调用代码的部分。
  • 3、代码可读性更强。隐藏实现细节,便于把控整体功能。
  • 4、程序安全性更强。

继承

继承是指子类继承父类的属性(特征)及方法(行为),通过关键字extends实现。
类的继承格式如下:

class 父类{
}

class 子类 extend 父类{
}

继承类型

Java支持以下几种继承类型:

  1. 单继承:B继承A
  2. 多重继承:B继承A,C继承B
  3. 不同类型继承一个类:B继承A,C继承A
  • Java不支持多继承:B继承A,B继承C

继承的特性

  • 子类拥有父类非private的属性和方法
  • 子类可以拥有自己的属性和方法,即对父类进行扩展
  • 子类可以用新的方式实现父类的方法(多态?
  • 可以多重继承,即B继承A后,C还可以继承B
  • 提高了类之间的耦合性(但是耦合度过高会降低代码独立性)

继承关键字

extends关键字

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关键字

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的用法类似,均用来指明对象。不同之处在于,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关键字声明类可以把类定义为不能继承的最终类;或者将方法定义为不能被子类重写的固定方法。
声明类

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()时:

  • s毫无疑问会执行Salary中的mailcheck()方法。
  • e是Employee的引用,所以编译器会去Employee类查找mailcheck()方法;但在运行时,Java虚拟机(JVM)调用的是Salary类的mailCheck()方法。

以上整个过程被称为虚拟方法调用,该方法被称为虚拟方法。Java中所有方法都能以这种方式表现,因此,重写的方法能在运行时调用,不管源代码中引用变量是什么类型。

对象和类

一个类可以拥有多个变量方法

其中类型变量包括:
-局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。
-成员变量:成员变量是定义在类中,方法体之外的变量。
-类变量:也是定义在类中,方法体之外的变量,但必须声明为static类型。

属性控制

Java的控制权限有以下4种:

  • public:所有类可见
  • protected:同一类,包,继承类可见
  • default:同一类,包中成员可见
  • private:仅同一个类中成员可见

定义静态常量时通常会这样定义:public static final int PAGE_SIZE=10

构造方法

每个类都有至少一个构造方法。若没有定义,Java编译器将会为类自动加上一个没有参数的构造方法。
构造方法必须与类同名,参数的个数没有限制。一个类可以定义多个(参数)不同的构造方法。

创建对象

对象是根据类创建的。创造对象需要以下三步:
1、声明:声明一个对象,包括对象名称和对象类型。
2、实例化:使用关键字new来创建一个对象。
3、初始化:使用new创造对象是,会调用构造方法初始化对象。

你可能感兴趣的:(Java)