第二章:对象与类

第二章:对象与类

  • 通俗说类就是构造对象的模板或蓝图。

类之间的关系:

  • 依赖:如果一个类的方法使用或操纵另一个类的对象,那么就是这个类依赖另一个类,应该把类之间的依赖尽可能的减少。
  • 聚合:一个order对象里包含若干个item对象
  • 继承:通过扩展一个类来建立另外一个类的过程叫做继承

封装

  • 将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。按照我的理解,就是把类封成一个黑盒子,只暴漏有限的特定功能。而使用者也不需要关心这个类是怎么实现的,只需要调用他暴露出来的特定功能即可。

对象

三个主要特性

  • 行为或方法(action):可以对对象完成什么操作,或者对对象应用什么方法
  • 状态或属性(attr):调用对象的方法时,对象会进行什么样的响应。
  • 标识(flag):如何区分具有形同行为与状态的不同对象

打印日历

//指明属于哪个软件包
package com.shuaige.Person;
//引入相关的类
import java.time.DayOfWeek;
import java.time.LocalDate;

class Test2{
    public static void main(String[] args) {
//        声明一个日期对象
        LocalDate date = LocalDate.now();
//        获取月份
        int month = date.getMonthValue();
//        获取天
        int today = date.getDayOfMonth();
//        minusDays  生成当前日期-x天的日期
        date = date.minusDays(today - 1);
//       getDayOfWeek 返回星期几,比如星期三就是MONDAY,返回值是大写
        DayOfWeek weekday = date.getDayOfWeek();
//        这里的getValue 会返回1,因为此处的date是2022-08-01,而1号是星期一,所以getValue返回的就是1
        int value = weekday.getValue();
        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for (int i = 1; i <value ; i++) {
            System.out.print("");
        }
//        如果月份是8月份的话,就进入while循环
        while (date.getMonthValue() == month){
//              打印日期,
            System.out.printf("%3d",date.getDayOfMonth());
//            如果日期是当天的话,就打印*号
            if(date.getDayOfMonth() == today){
                System.out.print("*");
            }else{
//                否则打印空格
                System.out.print(" ");

            }
//            然后日期+1
            date = date.plusDays(1);
            if(date.getDayOfWeek().getValue() == 1){
                System.out.println();
            }
        }
    }
}

类的结构

基本的类结构

class  demoClass{
	private name;//私有属性
	public demoClass(){
		//构造器,可以有参数,可以无参数,一般都写两个构造器,一个有参数的,一个没有参数的,
		//构造器必须与类同名,
        //并且没有返回值,
        //构造器总是跟new一起使用
	}
	//类的方法
	public String getName(){
	  return name;
	}
}

静态字段和静态方法

  • 如果将一个字段修饰为static字段,那么每个类中就只有这样一个字段,而非静态的,则类的每个实例都会有这一个字段的副本,
  • 静态常量:就是不可修改的常量

对象构造

  • 方法的重载

    定义:

    • 在同一个类中,定义了多个同名方法,这些同名的方法具有同样的功能

    • 每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系

      注意:与返回值无关

  • 方法得重写

    • 书写格式:跟他要重写得方法一样就行。
    • @Override重写注解:
      1. @override是放在重写后得方法上,检验子类重写时语法是否正确
      2. 加上注解后如果有红色波浪线,就表示语法错误
    • 只有在虚方法表里得方法才可以被重写,虚方法不包括:private的方法,static的方法,final的方法

类设计技巧

  • 一定要保证数据私有
  • 一定要对数据进行初始化
  • 不要在类中使用过多的基本类型
  • 不是所有的字段都需要单独的字段访问器和字段更改器
  • 分解有过多职责的类,就是过于臃肿的类
  • 优先使用不可变的类

第二章完,其实少了一部分内容,但是嘞,感觉并不是那么特别需要做笔记。还是等下一次重读的时候再说吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值