跟着猿人学Java-002-Java中的类与对象是个什么鬼

大家好,我是猿人(猿码天地创始人),今天给码农们或即将成为码农或想成为码农的朋友讲讲Java中的类与对象,究竟是个什么鬼,现在是深夜23:18分,猿人最擅长熬夜,就是不怕掉头发!一切都是为了亲爱的粉丝朋友能学到知识,猿人熬夜也是值得的!

我是「猿码天地」,一个热爱技术、热爱编程的IT猿。技术是开源的,知识是共享的!

写作是对自己学习的总结和记录,如果您对 Java、分布式、微服务、中间件、Spring Boot、Spring Cloud等技术感兴趣,可以关注我的动态,我们一起学习,一起成长!

用知识改变命运,让家人过上更好的生活,互联网人一家亲!

Java知识学堂https://gitee.com/zhangbw666/it-knowledge

好,废话不多说,直接干,进入正题:Good Good Study,Day Day Up!

1. 现实中的类与对象

  • 对象:一个具体的实体、一个具体的事物(同时具有属性和方法)

举例:

汽车  
属性:品牌、车轮、方向盘、车灯 
功能:载人、赛车
  • 类:具有相同属性和功能的对象归为一类,这就是类,人类也是类啊,因为人也有属性和功能。

2. Java中的类

  • 类的创建(关键字class)

  • 类的属性

格式:
public   属性类型   属性名;
  • 类的方法

格式:
public   方法返回值类型   方法名(参数类型  参数名,……){
    方法体,方法需要执行的内容
}

注意:
(1) 方法中需要使用自己的属性,则直接写属性名。
(2) 参数为方法需要的外部条件。

  • 举例

public class Demo {
    //属性
    public String name;
    public int attackvalue;
    public int blood;
    //方法
    public void attack(captain cap){
        cap.blood=cap.blood-attackvalue;
    }
 }

3. Java中的对象

  • 对象的创建(关键字new)

格式:
类名 对象名 = new 类名();
  • 对象的属性

格式:
对象名.属性名
  • 对象的方法

格式:
对象名.方法名(参数值,……);
  • 举例

//创建一个对象
Demo iron=new Demo();
//对象属性
iron.name="钢铁侠";
iron.attackvalue=6;
iron.blood=120;

//创建第二个对象		
Demo cap=new Demo(); 			
//对象属性
cap.name="美国队长";
cap.attackvalue=8;
cap.blood=100;

//对象方法
while(iron.blood>0 && cap.blood>0){
    iron.attack(cap);
    cap.attack(iron);
}

4. 三个基本特征

封装

封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
继承的过程,就是从一般到特殊的过程。
在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承关键字:extends

猿人也给大家讲讲继承的四个关键字:extends,super,protected,private的含义及用法

  • ①Extends(扩展):用来帮助子类继承父类

用法:public class YanFaWork(子类) extends Father(父类){ }

可理解为:类xxx 由 xxx扩展得到

  • ②super(超级):用来继承(或者说是链接)父类中的属性。

用法:一般在构造函数中如下

public YanFaWork(String name) {
    super(name);
}

可理解为:超链接

  • ③protected(被保护的):用来定义属性,属性的权限是受保护的,但是子类中可以直接访问。

用法:

public class  Father {
    protected String name;
}
  • ④private(私有的):用来定义属性,属性的权限是私有的,子类不可以访问父类私有的财产。

用法:

public class YanFaWork extends Father{
    private int ernum;
}

protected和private的不同之处就在于,在父类中用protected定义的属性子类中可以直接访问,而用private定义的属性子类不能继承。

多态

简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

多态存在的三个必要条件:

1. 要有继承;
2. 要有重写;
3. 父类引用指向子类对象。

那么程序运行的结果是什么?答案是:两次“我是一个男人。。。”,也就是说,运行结果都一样,那第一个没体现多态的写法,和后面体现多态的写法有什么区别?或者说多态有什么好处?当你封装的方法中,需要传入一个Man类型的参数,并且在方法内部调用它的say()方法,这时候一切都没有问题。但是随着后面功能越来越复杂,光一个Man是无法满足需求的,这时就有了Children,Woman,OldMan等,它们说的不一样,你总不能定义很多方法,每个方法的参数分别为上述的Children等类型吧?

所以这时,你只需要编写一个父类People,让Children这些继承并重写People方法,将你的方法参数设置为People类型的,即可解决问题!

实现多态,有二种方式,重写(Override)和重载(Overload)。
重写,是指子类重新定义父类的虚函数的做法。
重载,是指允许存在多个同名函数,而这些函数的参数不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

5. 类和对象的关系

1.类是一个静态的概念,类本身不携带任何数据。当没有为类实例化对象时,类本身不存在于内存空间中。

2.对象是一个动态的概念。每一个对象都有自己独特的属性,使用关键字new实例化对象时,同时为对象分配了内存。

猿人于2021年3月15日 0点40分 于深圳整理,整理完这篇文章头发还有10万零548根,今天掉了2根头发,持续记录头发根数,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猿码天地

相互学习,谢谢您的打赏。

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

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

打赏作者

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

抵扣说明:

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

余额充值