JAVA程序设计----面向对象(上)
首先还是老样子,先来一点思考题。
1.什么是面向对象?
面向对象是用对象来模拟现实实际的事物,用对象之间的关系描述事物之间的联系。
2.构造方法与普通成员方法的区别?
格式区别:
构造方法和类名相同,并且没有返回类型,也没有返回值。
普通成员方法可以任意起名,必须有返回类型,可以没有返回值。
作用区别:
构造方法用于创建对象,并进行初始化值。
普通成员方法是用于完成特定功能的。
调用区别:
构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数
普通成员方法是由创建好的对象调用,可以调用多次
3.什么是垃圾回收机制?
Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间,回收之前会自动调用finalize()方法,用于清理资源。
4.类与对象之间的关系?
类是对象的模板,对象是类的实例,类只能通过对象才能使用
自我的一点小结:
1.面向对象的特点主要概括为封装性,继承性和多态性。
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。继承是两个类之间的一种关系,eg:一个百货公司类与销售员类相联系。多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类及相关类。该统一风格可以由父类来实现,根据父类统一风格的处理,可以实例化子类的对象。
2.类和对象
类是对象的抽象,为对象定义了属性和行为,但类本身既不带任何数据,也不存在于内存空间中,而对象是类的一个具体存在,既拥有独立的内存空间,也存在独特的属性和行为。属性还可以随着自身行为而发生改变。
3.构造方法定义
构造方法实在创建一个对象使用new关键字时被调用的。构造方法有三个特征:
构造方法名与类名相同
构造方法没有返回值类型
构造方法中不能使用return返回一个值
4.this关键字
this表示当前对象,指向调用的对象本身。可以调用类中的属性,可以调用成员方法,也可以调用构造方法。
5.static关键字
static关键字表示静态的,用于修饰成员变量,成员方法以及代码块。
使用static修饰的成员变量,称为静态变量或类变量,它被类的所有对象共享,属于整个类所有,因此可以同过类名直接访问。而未用static修饰的成员变量,它属于具体对象独有只能通过引用变量访问。
使用static修饰的成员方法,称为静态方法,无需创建类的实例就可以调用静态方法,静态方法可以通过类名调用。
使用static修饰的代码块,它是最早执行的代码块。
上个代码:大致意思定义两个类Worker,Address。然后创建对象输出zhangsan,25,2500,北京市,1000084。具体就不写上去了,类似作业题随便一本教科书上都可以找到。
public class mainWorker { public static void main(String[] args) { Address addr = new Address("北京市","1000084"); Worker worker1 = new Worker("zhangsan",25,2500,addr); // Worker worker2 = new Worker("王火",25,5000); System.out.println(worker1.toString()); // worker1.work(12); // worker2.work(); } }
public class Worker { private String name; private int age; private double salary; private Address addr; public Worker() { } public Worker(String name, int age, double salary, Address addr) { this.name = name; this.age = age; this.salary = salary; this.addr = addr; } @Override public String toString() { return "Worker{" + "name='" + name + '\'' + ", age=" + age + ", salary=" + salary + ", addr=" + addr + '}'; } public void work(){//无参构造方法 } public void work(int hours){//构造方法的重载 System.out.println(name+"工作时间为:"+hours); } }
public class Address { private String address; private String zipCode;//邮编 public Address() { } @Override public String toString() { return "Address{" + "address='" + address + '\'' + ", zipCode='" + zipCode + '\'' + '}'; } public Address(String address, String zipCode) { this.address = address; this.zipCode = zipCode; } }
原文:https://blog.csdn.net/qq_41946557/article/details/90146285