Java基础--面向对象编程1(类与对象)

1.类(class)的定义

类是对一组具有相同特征和行为的对象的抽象描述。

在程序中,引入类的概念,就是为了快速生成更多的具有相同特性和行为的事物。

2.对象(object)的定义

对象是类的具体实现,表示一个独立的、唯一的个体,具有属性和方法。

3.属性和方法

属性:在程序中类或者对象具有的特征,具体对象的属性拥有的数据称为属性值。

方法:类或者对象的行为。

4.定义类和对象

创建1个Student的类,类的属性有学号(sid)、姓名(name)、年龄(age)、性别(gender),类中声明了一个learn()方法。

 1 public class Student{
 2     
 3     // 声明类的属性
 4     String sid;
 5     String name;
 6     int age;
 7     char gender;
 8     
 9     // 声明方法
10     public void learn(String cName){
11         System.out.println(name+" learn "+cName);
12     }
13 }

下面代码中新建了一个stu对象,通过.语法给对象的属性赋值和方法调用。

 1 public class Test01{
 2     public static void main(String[] args){
 3         // stu是Student的一个对象,也是Student的一个实例
 4         // new 操作就是实例化过程
 5         Student stu = new Student();
 6         // 给属性赋值(.语法)
 7         stu.name = "张三";
 8         stu.sid = "001";
 9         // 调用方法
10         stu.learn("java");
11         
12         Student stu2 = new Student();
13         stu2.name = "李四";
14         stu2.sid = "001";
15         stu2.learn("c++");
16         
17     }
18 }

5.属性的声明

声明方式:[修饰符] 属性类型 属性名称  [=默认值]

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0   char:\u0000,  boolean:false,  所有引用类型:null)  。

属性的作用域范围是整个类体。

6.面向对象编程思维

OOP(Object Oriented Progarmming),即面向对象编程是Java程序员必须具备的编程思想。Java程序通过类来构造对象,并通过各个对象之间相互配合完成一个复杂的需求。

以下是运用面向对象的编程思想来实现手机播放一首歌曲的需求。

 a.创建1个Music的类,定义类的属性有name、singer、times、content,方法有showInfo()。

 1 public class Music{
 2     String name;
 3     String singer;
 4     int times;
 5     String content;
 6 
 7     public void showInfo(){
 8         int hour=times/3600;
 9         int minute=times%3600/60;
10         int second=times%60;
11         System.out.println("正在播放:"+name);
12         System.out.println("歌手:"+singer);
13         System.out.println("时长:"+hour+"--"+minute+"--"+second);
14         System.out.println("歌词:"+content);
15     }
16 
17 }

b.创建1个Phone的类,类的属性有brand、type,类的方法有play(Music music),并在play()方法中调用Music类中的方法music.showInfo()。

1 public class Phone{
2     String brand;
3     String type;
4     public void play(Music music){
5         System.out.println("正在使用"+brand+type+"播放歌曲");
6         music.showInfo();
7     }
8 }

c.创建1个phone对象和1个music对象,给2个对象的属性赋值,并通过调用phone.play(music)方法最终实现了手机播放一首歌曲的需求。

 1 public class Test03{
 2     public static void main(String[] args){
 3         Phone phone =new Phone();
 4         phone.brand="华为";
 5         phone.type="P20";
 6         Music music =new Music();
 7         music.name="我很快乐";
 8         music.singer="刘惜君";
 9         music.times=213;
10         music.content="我也不会难过\n你不要小看我\n有什么熬不过\n大不了唱首歌\n虽然是悲伤的歌\n声音有点颤抖\n也比你好的多\n我还是很快乐";
11         phone.play(music);
12     }
13 }

d.程序运行结果:

 

转载于:https://www.cnblogs.com/WhiperHong/p/10738807.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 覆盖和equals是面向对象编程的两个重要概念。 覆盖指的是子重写父的方法,使得子可以根据自己的需求来实现该方法。在覆盖时需要注意方法名、参数列表和返回值型必须与父方法一致,否则会编译错误。覆盖可以提高代码的复用性和可维护性。 equals是Object的一个方法,用于比较两个对象是否相等。默认情况下,equals方法比较的是两个对象的引用是否相等,即是否指向同一个内存地址。如果需要比较两个对象的内容是否相等,就需要在重写equals方法,并根据的属性来比较对象的内容。在重写equals方法时,需要满足自反性、对称性、传递性和一致性等条件,否则可能会导致程序出错。 总之,覆盖和equals都是面向对象编程非常重要的概念,掌握它们可以提高代码的质量和效率。 ### 回答2: 覆盖与equals是Java面向对象编程的两个基础概念,它们的正确应用非常重要。 覆盖(Override)是指子重写(覆盖)父的方法。在Java,子可以重写其父的方法,子的方法名、参数型和返回值型必须与父方法一致。通过覆盖,我们可以实现灵活的代码复用和更高效的代码运行。 在实际开发,我们需要注意覆盖的一些规则:首先,被覆盖的方法必须有相同的方法名、参数列表和返回值型;其次,覆盖的方法修饰符不能比被覆盖的方法更严格;最后,被覆盖的方法不能是final型的。 equals是Java的一个方法,它用于比较两个对象是否相等。在默认情况下,equals方法比较的是两个对象的引用地址,但是我们可以重写equals方法,来使其比较对象的内容是否相等。 当我们需要比较自定义的对象时,必须重写equals方法,因为默认的equals方法不能满足我们的需求。在自定义equals方法时,需要遵循几个规则:首先,比较对象时需要保证其一致性、反射性、对称性和传递性;其次,equals方法必须是自反的,并且不能与其他对象型(如String型)相等;最后,equals方法必须与hashCode方法一致。 总之,覆盖和equals方法是Java面向对象编程的非常基础的概念,我们需要在实际开发灵活应用,以实现更高效、更灵活和更安全的代码编写。 ### 回答3: 覆盖是指子可以覆盖父的某些方法,使得子在调用这些方法时,执行的是自己的实现而不是父的实现。而equals()方法是用来比较两个对象是否相等的方法,它是Object的一个方法,在子也可以重写。 在覆盖,子通过重写父的某些方法,可以添加或修改方法行为。在Java,子必须要实现父抽象方法,否则子就必须声明为抽象。同时,子通过super关键字可以调用父被覆盖的方法,从而实现在子添加新的行为。 在equals()方法,如果不重写,则会默认调用Object的equals()方法,这种比较方式只比较两个对象的引用是否相等,而不是对象的值是否相等。因此,在比较两个对象的值时,需要在子重写equals()方法,并根据实际需求来实现比较两个对象的值是否相等。 在重写equals()方法时,需要遵循以下几点原则: 1. 自反性:对于任何非 null 的对象 x,x.equals(x) 必须返回 true。 2. 对称性:对于任何非 null 的对象 x 和 y,如果 x.equals(y) 返回 true,则 y.equals(x) 必须返回 true。 3. 传递性:对于任何非 null 的对象 x、y 和 z,如果 x.equals(y) 返回 true,y.equals(z) 返回 true,则 x.equals(z) 必须返回 true。 4. 一致性:对于任何非 null 的对象 x 和 y,只要对象的状态没有发生改变,则 x.equals(y) 多次调用时必须返回相同的结果。 5. 非空性:对于任何非 null 的对象 x,x.equals(null) 必须返回 false。 综上所述,覆盖和equals()方法都是非常重要的Java基础概念,对于Java程序员来说,熟练掌握这两个概念可以帮助我们更好地进行Java开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值