Java:面向对象基础,类的定义、对象的创建与使用、类的封装、构造方法的定义、构造方法的重载、this关键字、静态变量static、类的继承、super关键字、方法的重写、Java中继承的特点。

类的定义:

[类修饰符] class类名 [extends父类名][implements接口名序列]{

类体

}

       没有public修饰的类只能在它所在的包内被访问,有public修饰符的可以在任意位置访问。

类还可以用final(最终的)、abstract(抽象的)等来说明类的其他特征。

        类体中可以定义成员变量和成员方法。类的成员变量可以在声明时赋值也可以不赋值,成员变量的数据类型和成员方法的返回类型可以是任意类型。成员方法可以重载(同名但是参数类型或个数不同)。

        成员变量在整个类内有效,而局部变量只在定义它的方法内有效。

       注: 局部变量必须先初始化后才能使用,而成员变量可以直接使用。若局部变量与成员变量同名,则在方法中通过变量名访问到的将是局部变量,而不是成员变量。

对象的创建与使用:

基本格式: 类名 对象名=new 类名( );

对象必须先创建、后使用,否则会发生空指针异常。

当对象没有任何变量引用时,将不会再被使用。

创建对象的目的是为了调用构造方法。

类的封装:

定义:在定义类时,将类中的属性私有化(private),然后提供public修饰的共有get方法和set方法操作私有属性。  

//get:获取内存,set:存放数据。get:返回类型就是数据类型,set的返回类型为void类型。

构造方法的定义:

        定义:构造方法是一个与类同名且没有返回值也不能加void声明的方法,在方法中不能使用return返回一个值,但是可以单独使用return语句来作为方法的结束。

注:用构造方法的目的就是对变量进行初始化,构造方法通过new关键字实现调用。object类是所有类的副类。隐式的构造方法,修饰符与类相同。

注:若类中没有定义任何的构造方法,则系统会自动添加一个无参数的默认构造方法,方法体为空,若定义了方法,则默认构造方法就不会被添加。

构造方法的重载:

          定义:在一个类中定义多个参数不同(参数类型不同或参数个数不同)的构造方法。

注:参数名相同,参数类型不同,也是重载。若使用private将构造方法私有化,则在类的外部不可以使用new的方式来实例化对象。

package project01;

public class Student {
	private String name;
	private int age;
	//类的封装
	public String getname() {
		return this.name;
	}
	public void setname(String name) {
		this.name=name;
	}
	public int getage() {
		return this.age;
	}
	public void setage(int age) {
		this.age=age;
	}
	//构造方法,函数名与类名相同,无返回类型
	public Student(String name) {
		this.name=name;
	}
	//构造方法重载
	public Student(String name, int age) {
		this.name=name;
		this.age=age;
	}
}

this关键字:

关键字this表示当前对象。

常见的3种用法:

this成员变量:解决局部变量与成员变量的同名问题。

this成员方法:解决同一类中构造方法的调用。

this();表示本类的构造方法。

注:使用this( )调用构造方法的语句必须是构造方法中的第一个语句,且只能出现一次。不能再一个类的两个构造方法中使用this互相调用。

静态变量static:

静态成员变量可以通过类名来访问,也可以通过对象名来访问(推荐用类名)。

Static只能修饰成员变量,不能修饰局部变量。

静态方法可以通过类名调用也可以通过对象调用。

静态方法只能访问类中用static修饰的成员。

静态方法不能通过任何方式引用this和super关键字。

静态方法和属性(成员域)都是属于类的,可以通过类名或对象调用。如:

为AB类的一个无形式参数无返回值的方法method书写方法,使得使用AB.method()就可以调用该方法。     A   

A.static void method(){}   B.public void method(){}

C.final void method(){}     D.abstract void method(){}

//A选项中就是通过类名来调用静态方法的。

类的继承:

  基本格式:

[类修饰符] class <子类名>  extends <父类名>{

  //成员变量

//成员方法

}

注:一个子类只有一个父类,而一个父类可以有多个子类。子类继承了父类除构造方法之外的数据(成员变量,成员方法),私有成员数据无法继承。如果在父类中声明了私有成员变量,则在子类继承中不能直接使用私有成员变量,只能继承其属性,利用空间内存。如:

package project01;
class MyRectangle{
	 private double width;  //声明私有成员变量
	//封装
	public double getwidth() {
		return this.width;  //宽
	}
	public void setwidth(double width) {
		this.width=width;
	}
	//构造方法
	 public MyRectangle(double width) {
		 this.width=width;
	 }
	 public void getArea() {
		 System.out.println("形面积为"+width*width);
	 }
}	
class MySquare extends MyRectangle {  //子类MySquare继承父类MyRectangle
	MySquare(){
		super(5);
	}
	public void getArea() {  //方法重写
	System.out.println("正方形的面积:"+this.getwidth()*this.getwidth());  
	//其中this.getwidth()就相当于父类中私有成员width的属性(方法)即width*width。
	}
}
public class Lianxiti {
	public static void main(String[] args) {
		MySquare p=new MySquare();
		p.getArea();
	}
}

Java中继承的特点:

  1. Java继承是单继承:一个子类只能继承一个父类。
  2. Java继承具有传递性。
  3. 所有类都直接或间接的继承了object类。

注:在Java中,object类是唯一一个没有父类的类。

方法的重写:

        在继承关系中,子类继承父类,子类是一个特殊的父类,子类会自动继承父类定义的变量、方法,在进行扩展时,大多数情况下,子类是在父类的基础上添加一些自己的变量、方法,但有些时候子类需要对继承来的方法进行一些修改,即对父类的方法进行重写。

        注:子类重写父类中的方法时,子类中重写的方法要与父类中被重写的方法具有相同的方法名称、参数列表和返回值类型。

        子类也可以定义和父类同名的成员变量,此时子类对象中将隐藏父类同名的成员变量,与重写不同的是,这种隐藏不是物理意义上的覆盖。

注:子类重写父类方法,重写方法不能使用比被重写的方法更严格的访问权限。

        如:父类中的方法是public,子类的方法就不能使用private修饰。重写方法子类修饰符访问权限大于等于父类。有继承才有重写,有重写才有多态。

Super关键字:

Super关键字用来访问父类中的非私有成员。

使用super关键字访问父类中的成员变量、成员方法格式:

Super.成员变量

Super.成员方法([参数1,参数2...])

使用super关键字调用父类的构造方法:

        在存在继承关系时.当使用new关键字创建一个子类对象时、不但要调用子类相应的构浩方法,还会调用父类的构造方法、其遵循的特点如下:

(1)子类的构造方法必须调用其基类的构造方法。

(2)子类可以在自己的构造方法中使用 super()调用基类的构造方法。

(3)如果使用super()调用基类的构造方法,必须写在子类构造方法的第一行。

(4)如果子类的构造方法中没有显式地调用基类的构造方法,那么系统自动调用基类中没有参数的构造方法。

(5)如果子类的构造方法中既没有显式的调用基类的构造方法,而且基类中也没有无参数的构造方法,则编译出错。

注:一般错误原因:子类的构造方法一定会调用父类的构造方法,可以使用super关键字显示的调用,如果没有显示的调用,则系统会自动调用父类中无参数的构造方法,父类中可能没有定义无参的构造方法。(在父类中没有显示的定义构造方法,则系统会隐式的生成一个无参的构造方法,但若是父类中定义了有参的构造方法,则其中不会有无参的构造方法。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值