面向对象的三大特点:
封装:
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体是类,类通常可以对用户隐藏实现功能。采用封装思想可以保证类内部数据结构的完整性,提高了程序的可维护性。
继承:
在某两个类中,可能大部门的性质,内容都差不多,但是会有少量不同的地方,这样我们就可以去把父类(需要继承的类)拿到另一个类中(子类)使用。
例如:平行四边形,正方形,矩形都是四边形,这时我们完全可以重复利用平行四边形
的属性和行为,让平行四边形作为父类,同时添加正方形,矩形独有的属性和行为即可。
多态:
其实将父类应用于子类的特征就是多态。
代码理解:
package tql;
public class bb {
//成员属性
String name;//猫名
int age;//猫年龄
String special;//品种
//成员方法:
//带参方法
public void cat(String name,int age,String special)
{
this.name=name;
this.age=age;
this.special=special;
}
//无参方法
public void run() {
System.out.println("小猫快跑!!");
}
public bb(String name,int age,String special)
{
System.out.println("小猫的名字叫"+name);
System.out.println("小猫的年龄为"+age);
System.out.println("小猫的品种为"+special);
}//构造方法
public static void main(String[] args) {
bb CAT=new bb("花花",14,"蓝蓝");
CAT.cat("花花",14, "蓝猫");
CAT.run();
}
}
运行结果:
类
类的定义:类就是同一类事物的统称,例如鸟类,狗类,而一只鸟,一只狗就不能称作类。
类就好比是一个模板,就比如我们造人民币,就有专门的模板工具,当我们需要钱的时
候直接拿模板就可以快速造出很多钱了
public void run() {
输入填写的内容;
}
这就是一个类,而
public static void main(String[] args) {
}这个也是一个类,不过他是一个入口类。
对象:
对象是事物存在的实体,如人类,书桌,计算机等物品一样。
(闲聊:在计算机领域有一个词语万物皆对象是非常强大的词。)
当我们有了造硬币的模板之后,我们通过模板造出来的钱就是对象啦。
==bb CAT=new bb(“花花”,14,“蓝蓝”);==即是一个创建对象的模板,
后面成员方法中会讲解带参数的情况。
通常的模板为:类名 创建类名对象=new(创建对象操作符) 构造方法的参数(); 如 Test test=new Test();
成员
成员就是所谓的家庭的一份子,在计算机里也就是类中的变量,
在家庭这个环境下,我们有爸爸,妈妈,儿子,爷爷,奶奶。。。
这些人都是属于家庭的一个成员
上述代码中箭头所指向的即是成员
对象实例化:
成员方法
成员方法就是在类中的一种行为,就比如人类可以唱,跳,跑,这些动作都是属于行为。
成员方法分为4种情况,1.构造方法,2.无参方法,3.有参方法
1.构造方法:
代参构造方法就是在创建对象的时候,自动调用该方法。
无需使用.(点操作符)来实现。
模板:
权限修饰符(public)+类名(切记无返回值)+(){
输入内容;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191004235519262.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUzODIz,size_16,color_FFFFFF,t_70)
如图,当我们创建一个a对象之后,就直接能够看见构造方法就自动调用了。
2.无参方法:
package tql;
public class bb {
public void t()
{
System.out.println("我是无参方法!");
}
public static void main(String[] args) {
bb a=new bb();
a.t();
}
}
无参方法模板: 权限修饰符(public)+返回类型+类名+(){
输入内容;
}
调用方法时:对象名.方法名();
3.有参方法:
//带参方法
public void cat(String name,int age,String special)
{
this.name=name;
this.age=age;
this.special=special;
}
有参方法模板: 权限修饰符(public)+返回类型+类名+(参数){
输入内容;
}
调用方法时:对象名.方法名();
这里要注意的是this,
this关键字用法:
this在类中表示当前对象,可以通过this关键字完成当前对象的
成员属性,方法和构造方法调用。
```
何时使用this
this在调用成员属性,可以解决成员属性和局部变量名字冲突,
this调用成员属性
this.name=name;
this.age=age;
this.special=special;
这里你可以看到有两个name,等成员,以第一行为例,右边的name表示你要传入的参数,而this.name,则表示该类中的name成员,如果,没有this关键字直接name=name的话,你会看见的结果为null。这是因为,java中会使用就近原则,就会把参数name赋值给参数name,毫无意义,并没有赋值给成员name。
本段代码也可以不用this这个关键字,可以将代码改为:
public void cat(String Name,int Age,String Special)
{
name=Name;
age=Age;
special=Special;
}
this调用成员方法
package tql;
public class bb {
public void t()
{
System.out.println("我是代参构造方法!嘿嘿");
}
public void q()
{
this.t();
System.out.println("这面内容q方法调用t方法所产生的结果");
}
public static void main(String[] args) {
bb a=new bb();
a.q();
}
}
this调用重载的构造方法:
当我们要在重载的构造方法调用,重载之前的构造方法时,我们可以通过this();
来调用构造方法,但this()方法必须放在方法体内的第一行,否则会报错;
package tql;
public class bb {
String name;
public bb()
{
System.out.println("我是无参构造");
}
public bb(String name)
{
this();
this.name=name;
System.out.println("我是单参构造");
System.out.println(this.name);
}
public static void main(String[]argv)
{
bb a=new bb("注意this()一定要放在前面,放在后面会报错");
}
好啦,对于面向技术就说到这里吧!
对于面向对象有些知识点并没有介绍到,仅供参考