Java面向对象的总结

目录

一、概述

二、面向对象的总结

1.static关键字

2.构造函数

3.类

4.对象

5.this关键字

6.封装

7.继承

8.多态

9.向上转型

10.向下转型

11.静态内部类

 12.匿名内部类

13.接口

14.抽象类

15.方法的重写

16.方法重载


一、概述

Java是一门面向对象的语言,Java与c++不同它是一门完全面向对象的语言,它的任何工作都是在类中进行的。

什么是对象?

就像:一辆车,一个人就是对象

二、面向对象的总结

1.static关键字

类级别的静态修饰,static的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没有创建对象,也能使用属性和调用方法!被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。可以用类名直接调用类级别变量。

2.构造函数

构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。

3.类

类实际上就是定义了一个模板,对象就是由这个模板产生的实例。

类就是对象的状态和行为,在java中状态叫属性,行为叫方法。类的一般形式:class类名{类型实例变量名(可以理解为所要用的变量名)

4.对象

对象是通过是通过一个抽象的定义来的一个事物,有自己的属性和行为,在java中通常用new来创造

5.this关键字

指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)。

public Trapezoid(double a,double b,double c,double h) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.h = h;
    }

6.封装

可以用的修饰符:public(公共的,不同包类都可以用),protected(受保护的,继承中多用,可以让子类访问父类,但是不可以跨包),private(私有的,只能同类访问,可以用set,get方法使用里面的变量)

封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。

7.继承

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。子类拥有父类private的属性和方法。子类可以拥有自己属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。

8.多态

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

9.向上转型

格式:父类名 变量名 = new 子类名;

用父类的类型去new出子类的对象,可以更便利的去使用子类对象,不过只能调用父类里面有的属性和方法

Action action1 = new FishBreath();
		Action action2 = new DogAction();
		Action action3 = new CatAction();
		action1.breath();
		action1.shout();
		action2.breath();
		action2.shout();
		action3.breath();
		action3.shout();
	}

10.向下转型

格式:想要转的子类名 变量名 = (想要转型的子类名)父类名

用强制转型来将父类型的子类转为子类型的可以用instanceof来检查是否转换正确,该方法用来解决向上转型不可以调用子类方法的囧境

	Animal animal = new Tiger();
		if (animal instanceof Tiger) {
			Tiger tiger = (Tiger) animal;
			tiger.bark();
			tiger.love();
		}else if (animal instanceof Dog) {
			Dog dog = (Dog) animal;
			animal.bark();
		}else {
			Cat cat = (Cat) animal;
			animal.bark();
		}
	}

11.静态内部类

将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致。不过其细节方面仍然有很大的不同。一是静态成员(包括静态变量与静态成员)的定义。一般情况下,如果一个内部类不是被定义成静态内部类,那么在定义成员变量或者成员方法的时候,是不能够被定义成静态成员变量与静态成员方法的。也就是说,在非静态内部类中不可以声明静态成员二是在成员的引用上,有比较大的限制。一般的非静态内部类,可以随意的访问外部类中的成员变量与成员方法。即使这些成员方法被修饰为private(私有的成员变量或者方法),其非静态内部类都可以随意的访问。则是非静态内部类的特权。因为在其他类中是无法访问被定义为私有的成员变量或则方法。

 12.匿名内部类

是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。只能使用一次。没有名字用{}号来包括在里面创造一个及时使用的类

public abstract class NiMinInter {
	public abstract void speak();
}


public static void main(String[] args) {
		// TODO Auto-generated method stub
		NiMinInter niMinInter = new NiMinInter() 
//为了实现上面的抽象类,下面就为匿名内部类去实现里面的方法

{
			
			@Override
			public void speak() {
				// TODO Auto-generated method stub
				System.out.println("这是匿名内部类");
			}
		};
		niMinInter.speak();
	}

13.接口

接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法,可用public interface 类名 的格式来声明。

14.抽象类

普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。

15.方法的重写

在子类中重写父类的方法,方法名一样加个@Override来修饰,一般用于抽象类或接口类父类重写它们的方法实现自己本方法的各类特色

public abstract class Animal {
	public abstract void shout();
	public abstract void breath();
}

//子类代码
public class Cat extends Animal{
	@Override
	public void breath() {
		// TODO Auto-generated method stub
		System.out.println("猫用鼻子和嘴呼吸");
	}
	@Override
	public void shout() {
		// TODO Auto-generated method stub
		System.out.println("猫喵喵的叫");
	}

16.方法重载

通过改变在方法中传入参数的类型或顺序或数量来重载方法

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dont give up

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

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

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

打赏作者

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

抵扣说明:

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

余额充值