因为之前学习的java知识只属于java的基本程序设计范畴,属于结构化的程序开发,并不难,所以我选择跳过关于之前知识点的总结,而是选择总结关于面向对象编程(基础篇)的知识点。
1.面向对象的基础概念
主要介绍面向对象的程序设计的三个主要特性:封装性,继承性,多态性
封装性:将对象的属性及行为看成一个整体,将这个整体进行封装,并可规定不同级别的“可见性”或访问权限
继承性:被继承的类称为父类或超类,而经继承产生的类称为子类或派生类,派生类继承了超类的所有成员,并相应地增加自己的一些新成员。继承又可分为单继承和多继承,java通过接口的方式弥补了java子类不能继承多个父类的缺点
多态性:多态是允许程序中出现重名现象。可分为方法重载(属于之前知识,不做解释)和对象多态。对象多态是指子类对象可以和父类对象进行相互的转换,而且根据其使用的子类的不同完成的功能也不同
2.类与对象
定义一个person类
class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+",年龄:"+age);
}
}
创建一个对象
public class Demo01{
public static void main(String agrs[]){
person per = new Person();
}
}
注意:对象使用前一定要实例化
3.封装性
被封装的属性必须通过setter和getter方法来设置和取得
class Person {
private String name;
public void tell(){
System.out.println("姓名:"+getName());
}
public String getName() {
return name;
}
public void setName(String n){
name = n;
}
}
4.构造方法
注意:(1)构造方法的名称必须与类名称一致
(2)构造方法的声明处不能有任何返回值类型的声明
(3)不能在构造方法中使用return返回一个值
class Person {
private String name;
private int age;
public Person(){}
public Person(String name) {
this.setName(name);
}
public Person(String name , int age) {
this.setName(name);
this.setAge(age);
}
public void tell(){
System.out.println("姓名:"+getName()+",年龄:"+getAge());
}
public String getName() {
return name;
}
public void setName(String n){
name = n;
}
public int getAge() {
return age;
}
public void setAge(int a) {
if(a>=0 && a<150) {
age = a;
}
}
}
public class ConsDemo03{
public static void main(String arg[]) {
Person per1 = new Person();
Person per2 = new Person("李四");
per1.tell();
per2.tell();
在定义有参构造方法前要一般先定义一个无参构造方法
5.匿名对象
一般匿名对象只使用一次,而且只在堆内存开辟空间
public class ConsDemo03{
public static void main(String arg[]) {
new Person("小丽",12).tell();
}
}
6.String类
String有两种实例化对象的的方式,一是通过直接赋值,二是用new调用构造方法。二者区别在于前一种只会开辟一块堆内存空间,后者会开辟两块堆内存空间
注意:(1)在String类中“==”是比较字符串的地址值,而非内容
(2)字符串的内容一旦声明则不可改变,一个String对象内容的改变实际上是通过内存地址的“断开-连接”变化完成的
关于String类中的常用方法,我不做过多赘述
7.引用传递及基本应用
引用传递就是将堆内存空间的使用权交给多个栈内存空间
8.关键字
this关键字作用:
(1)表示类中的属性
(2)可以使用this调用本类的构造方法(注意:使用this调用方法必须放在构造方法的第一行)
(3)this表示当前对象
class Person {
private String name;
private int age;
public Person(String name , int age) {
this.name=name; //作用(1)
this.age=age;
}
public String getInfo(){
System.out.println("姓名:"+this.name+",年龄:"+this.age);
}
}
public class ConsDemo03{
public static void main(String arg[]) {
Person per2 = new Person("李四",23);
System.out,println(per2.getInfo());
}
}
class Person {
private String name;
private int age;
public Person(){
System.out.println("实例化对象");
}
public Person(String name , int age) {
this(); //作用(2)
this.name=name;
this.age=age;
}
public String getInfo(){
return "姓名:"+name+",年龄:"+age;
}
}
public class ConsDemo03{
public static void main(String arg[]) {
Person per2 = new Person("李四",23);
System.out,println(per2.getInfo());
}
}
static关键字
static属性:属性可被所有对象共享
static方法:方法可直接由类名称调用
9到13的知识点主要是理解性知识,我就不过多总结。