首页 > 代码库 > 自学java基础(三)
自学java基础(三)
1、面向对象程序设计的三大基本特种:封装,继承,多态。
封装:将数据和方法放在一个类中。
2、定义类:
修饰符 class 类的名字 { 类的内容 }
定义方法:(方法定义不能嵌套,不能在一个方法中定义另一个方法。)
修饰符 返回值类型 方法名字([参数1,参数2,参数n])
{
方法体;
}
生成对象:
public class Person { } Person p1 = new Person();
例子:
public class Test { //两个整数相加的方法 public int add(int a, int b) { return a + b; } //两个整数相减的方法 public int subtract(int a, int b) { return a - b; } //两个整数相乘的方法 public int multiply(int a, int b) { return a * b; } //两个整数相除的方法 public int divide(int a, int b) { return a / b; } //使用void关键字表示方法不返回值 public void output() { System.out.println("Hello World"); } public static void main(String[] args) { Test test = new Test(); int x = 8; int y = 3; int a = test.add(x, y); int b = test.subtract(x, y); int c = test.multiply(x, y); int d = test.divide(x, y); System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); test.output(); } }
3、引用类型。一个对象可以被多个引用所指向,同一时刻同一个引用只能指向一个对象。多个引用同时指向一个对象,那么无论哪一个引用改变对象的成员变量,都会反映在其他的引用上。
如果一个类中包含了属性和方法,那么该类生成的每一个对象都维护一个自己的对象,但同时拥有同一个方法。
public class People{ int age=20; public void change(People people){ people=new People(); people.age=30; System.out.println(age);//20 System.out.println(people.age);//30 } public static void main(String[] args){ People people=new People(); int age =people.age;//传递的是原生数据类型,直接赋值。 System.out.println(age);//20 people.change(people); int age2=people.age; System.out.println(age2);//20 } }
4、构造方法:用于完成对象的初始化。
特点:一:名字必须与类名相同。二:没有返回值,也不能出现void。三:若类中没有构造方法,java默认添加为空的构造方法。若声明了构造方法,则java编译器就不会再添加构造方法。四:通过new隐式调用
new生成对象的三步:为对象开辟内存空间,调用类的构造方法,将生成对象的地址返回。
public class ParamTest { public static void main(String[] args) { Person person = new Person(); person.change(person); int age = person.age;//20 System.out.println(age); int i = 10; person.change2(i); System.out.println(i);//10 System.out.println(person.age);//40 System.out.println(age);//20 } } class Person { int age = 20; public void change(Person person) { person = new Person(); person.age = 30; } public void change2(int age) { this.age = 40; } }
8,、构造方法重载:只需要看参数。如果在一个构造方法中调用另外一个构造方法,可以使用this()的方式调用。this()括号中的参数代表目标构造方法的参数。this()必须作为构造方法的第一句。
public class ConstructorOverload { public ConstructorOverload() { this(3); System.out.println("test"); } public ConstructorOverload(int i) { System.out.println(++i); } public static void main(String[] args) { ConstructorOverload col = new ConstructorOverload(); } }
//4 test
9、继承。java是单继承。生成子类对象时,java默认首先调用父类不带参数的构造方法,生成父类对象,然后调用子类构造方法,生成子类对象。
public class InheritenceTest3 { public static void main(String[] args) { Son son = new Son(); } } class Grandpa { public Grandpa() { System.out.println("grandpa"); } } class Father extends Grandpa { public Father() { System.out.println("father"); } } class Son extends Father { public Son() { System.out.println("son"); } } //grandpa father son
10、super关键字,表示对父类对象的引用。可以使子类调用父类带参数的构造方法,必须放在第一行(目的是保证先生成父类对象)。
当父类没有无参的构造方法的时候,必须使用super关键字显示调用父类的构造方法。
public class InheritenceTest2 { public static void main(String[] args) { Dog dog = new Dog(); dog.run(); } } class Animal { public void run() { System.out.println("animal is running"); } public void run(int i) { System.out.println("animal is sleepping"); } } class Dog extends Animal { public void run() { System.out.println("dog is running"); super.run(1); //调用父类的run方法 } } //dog is running animal is sleepping
自学java基础(三)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。