Java学习的第三天(对象与类)
写在前面
终于到了对象与类了,虽然到现在我还没有对象,要啥对象,要啥对象,new一个不就行了...今天花两百块钱买了汤小洋老师的Java课程,听说还可以,能登上CSDN推荐的应该都不赖吧。其实要视频课的话,b站上的尚学堂听说也还不错,说是学,但是要我看免费课,总让我有一种漫不经心的感觉,毕竟花了我接近两百块钱,总归冲这肉疼这一点,我也要看完,150多个小时,应该够我看看了。
今日所学
1.面向对象程序设计概述(object-oriented programming,OOP)
面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。
类:构造对象的模板或蓝图...我还是说说我对类的理解吧,类,顾名思义为一类,用来定义属性相同的一组对象的集合(也不知道对不对)。由类构造对象的过程称为创建类的实例。
对象:它来了,她真的来了。想什么呢,以汤小洋老师的话来说,世间万物皆对象!所以以后你就可以...。咳咳咳,言归正传,对象能够表示现实事物。这么来看,对象还是挺好理解哈...
要使用OOP,一定要清楚对象的三个主要特性:行为,状态,标识。
类与之间的关系:依赖("uses-a"),聚合("has-a"),继承("is-a")。
2.使用预定于类
对象与对象变量
要想使用对象,首先必须构造对象,并指定其初始状态。然后对对象应用方法。啥也别说了,先放码过来。
import java.time.DayOfWeek; import java.time.LocalDate; public class CalendarTest { public static void main(String[] args) { LocalDate date = LocalDate.now(); int month = date.getMonthValue(); int today = date.getDayOfMonth(); date = date.minusDays(today-1); DayOfWeek weekday = date.getDayOfWeek(); int value = weekday.getValue(); System.out.println("Mon Tue Wed Thu Fri Sat Sun"); for (int i = 1; i < value;i++) { System.out.print(" "); } while (date.getDayOfMonth() == month) { System.out.printf("%3d",date.getDayOfMonth()); if (date.getDayOfMonth()==today) System.out.print("*"); else System.out.print(" "); date = date.plusDays(1); if (date.getDayOfWeek().getValue() == 1) System.out.println(); } if (date.getDayOfWeek().getValue() != 1) System.out.println(); } }
书上以日历程序介绍预定义类,说实话,我看的有点晕乎,硬着头皮总结吧。
要构造应该Date对象,需要在构造器(构造函数)前面加上new操作符:new Date(),如果需要的话,可以将这个对象传递一个方法:System.out.print(new Date());
这个语句可以说明如何对新构造Date对象应用toString:String s = new Date().toString():
3.用户自定义类
先看源码
import java.time.LocalDate; import java.time.*; public class EmployeeText { public static void main(String[] args) { Employee[] staff = new Employee[3]; staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15); } } class Employee { private final String name; private double salary; private LocalDate hireDay; public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; hireDay = LocalDate.of(year, month, day); } public String getName() { return name; } public double getSalary() { return salary; } public LocalDate getHireDay() { return hireDay; } public void raiseSalary(double byPercent) { double rasie = salary * byPercent / 100; salary += rasie; } }
Employee类包含一个构造器和4个方法:
public Employee(String n, double s, int year, int month, int day)
public String getName()
public double getSalary()
public LocalDate getHireDay()
public void raiseSalary(double byPercent)
构造器:构造器与类同名:每个类可以有一个以上的构造器:构造器可以有0个、1个或多个参数:构造器没有返回值;构造器总是伴随着new操作符一起调用。
隐式参数与显式参数
隐式参数:出现在方法名前面的对象。显式参数:位于方法名后面括号中的数值。一般用关键字this指示隐式参数
私有方法:要实现私有方法,将关键字public改成private。
final实例字段:可以将实例字段定义为final,这样的字段必须在构造对象时初始化。这个字段的值已经设置,并且不能再修改这个字段。
今天学的貌似有点少了,可能内容比较难理解,也可能没那么好表达了,基本都是根据源码来展开描述的,慢慢来,加油。