编程语言
首页 > 编程语言> > J3 java面向对象

J3 java面向对象

作者:互联网

1.方法进阶

1.1方法定义

1.2方法重载

public class demo1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        tell("Tom", 2, 3);
        tell("Tik", 1, 2, 3);
    }
    public static void tell(String name, int i, int j){
        System.out.println(name + (i + j));
    }
    public static void tell(String name, int i, int j, int k){
        System.out.println(name + (i+j+k));
    }
}
public class demo1 {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		tell("Tom", 2, 3);
		tell("Tik", 1, 2, 3);
	}
	public static void tell(String name, int i, int j){
		System.out.println(name + (i + j));
	}
//	此处函数返回值不同,不构成重载!!!!!!!!!!!!!!!!!!!!!
//	public int tell(){
//		
//	}
//	public String tell(){
//		
//	}
}
package com.hanqi.demo1;

class SmallPerson{
	private int age;
	private  String  name;
	private int id;
	public SmallPerson(int age, String name, int id) {
		this.age = age;
		this.name =name;
		this.setId(id);
	}
	public SmallPerson(String name, int id) {
		this.age = 20;
		this.name =name;
		this.setId(id);
	}
	public SmallPerson(int id) {
		this.age = 30;
		this.name = "王大锤";
		this.setId(id);
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
}
public class test06 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		SmallPerson s = new SmallPerson(21, "hq", 4009);
		System.out.println(s.getId()+s.getName()+s.getAge());
		
		SmallPerson s1 = new SmallPerson("wahaha", 4008);
		System.out.println(s1.getId()+s1.getName()+s1.getAge());
		
		SmallPerson s2 = new SmallPerson(4007);
		System.out.println(s2.getId()+s2.getName()+s2.getAge());
	}

}
//////
4009hq21
4008wahaha20
4007王大锤30

1.3方法重写

1.被子类重写的方法不能拥有比父类方法更加严格的访问权限

2.访问权限:private<default<public

3.一半子类与父类方法权限设置为相同即可

package com.hanqi.demo1;

class A{
	public void tell() {
		System.out.println("我是tell方法");
	}
}
class B{
	public void tell() {
		System.out.println("重写了tell方法");
	}
}
public class test05 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		B b = new B();
		b.tell();
	}

}
/////////////////////////////////////////////////////////////////////////////////////////////////////
重写了tell方法
package com.hanqi.demo1;

class A{
	public void tell() {
		System.out.println("我是tell方法");
	}
}
class B extends A{
	public void tell() {
		super.tell();
		System.out.println("重写了tell方法");
	}
}
public class test05 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		B b = new B();
		b.tell();
	}

}
/////////////////////////////////////////////////////////////////////////////////////////////////////
我是tell方法
重写了tell方法

1.4super关键字

  • 在构造子类的过程中必须调用其父类的构造方法
  • 子类可以在自己的构造方法中使用super(argument_list)调用父类的构造方法,使用this(argument_list)调用本类的构造方法,如果调用super必须写在子类构造方法的第一行
  • 如果子类的构造方法中没有显示地调用父类构造方法,则系统默认调用父类的无参构造方法
  • 如果子类构造方法中既没有显示地调用父类构造方法,而父类中又没有无参的构造方法,则编译错误
  • 如以下例子,类BB继承自类AA,并重写了AA中的f方法。在new一个BB类的时候会默认调用父类的无参构造方法,之后再调用自己的构造方法,最后调用重写的方法
package com.hanqi.demo1;

class AA{
	protected void print(String s) {
		System.out.println(s);
	}
	AA(){
		print("调用父类A的无参构造方法");
	}
	public void f() {
		print("调用A的f()方法");
	}
}
class BB extends AA{
	BB(){
		print("调用子类B的无参构造方法");
	}
	public void f() {
		print("调用B的f()方法");
	}
}
public class test07 {
	public static void main(String[] args) {
		BB b = new BB();
		b.f();
	}
}
///////////////////////////
调用父类A的无参构造方法
调用子类B的无参构造方法
调用B的f()方法

2.类

2.1类的声明

class 类名称{
    类属性;
    类方法;
}
package com.hanqi.classdemo;

class Person{
	String name;
	int age;
	public void tell(){
		System.out.println("姓名:"+name+"\n年龄"+age);
	}
}
public class classDemo1 {

	public static void main(String[] args) {
		Person zhangSan = null;		//声明一个对象
		zhangSan = new Person();	//为对象分配空间(实例化操作)
//		Person zhangSan = new Person();
	}
}

3.对象

3.1类与对象的关系

3.2对象的创建

3.3对象内存分配

package com.hanqi.classdemo;

class Person{
	String name;
	int age;
	public void tell(){
		System.out.println("姓名:"+name+"\n年龄:"+age);
	}
}
public class classDemo1 {

	public static void main(String[] args) {
//		Person zhangSan = null;		//声明一个对象
//		zhangSan = new Person();	//为对象分配空间(实例化操作)
		Person zhangSan = new Person();
		zhangSan.name = "张三";		//对象赋值
		zhangSan.age = 80;
		zhangSan.tell();
	}
}
姓名:张三
年龄:80

Exception in thread "main" java.lang.NullPointerException at com.hanqi.classdemo.classDemo1.main(classDemo1.java:16)

4.面向对象三大特性

4.1封装

package com.hanqi.classdemo;

class Person1{
	private int age;
	private String name;
	public int getAge(){
		return age;
	}
	public void setAge(int age){
		if(age>=0 && age <=200){	//不满足该条件,则赋值操作无法进行
			this.age = age;
		}	
	}
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name = name;
	}
	public void tell(){
		System.out.println("年龄:"+getAge()+"\n姓名:"+getName());
	}
}
public class classDemo2 {
	public static void main(String[] args) {
		Person1 per = new Person1();
		per.setAge(-80);	//非法赋值,赋值无法完成
		per.setAge(80);
		per.setName("张三");
		per.tell();
	}
}

4.2多态

4.3继承

4.3.1概念

4.3.2格式

class 子类 extends 父类{
}
package com.hanqi.demo1;

class Person{
	private int age;
	private String name;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
class Student extends Person{
//	private int age;
//	private String Name;
	private int score;
//	public int getAge() {
//		return age;
//	}
//	public void setAge(int age) {
//		this.age = age;
//	}
//	public String getName() {
//		return Name;
//	}
//	public void setName(String name) {
//		Name = name;
//	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	public void tell() {
		System.out.println("姓名:"+getName()+"\n年龄:"+getAge());
	}
	public void tell1() {
		System.out.println("\n成绩:"+getScore());
	}
}
public class test02 {

	public static void main(String[] args) {
		Student s = new Student();
		s.setAge(20);
		s.setName("王八");
		s.setScore(100);
		s.tell();
		s.tell1();
	}

}

4.3.3继承限制

package com.hanqi.demo1;

class People1{
	private int age;

	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
class Worker extends People1{
	public void tell() {
		System.out.println("年龄:"+getAge());
	}
}
class PetWorker extends Worker{
	
}
public class test03 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Worker w = new Worker();
		w.setAge(100);
		w.tell();
	}

}

5.匿名对象

5.1概念

5.2举例

package com.hanqi.classdemo;

class Student{
	public void tell(){
		System.out.println("makabaka");
	}
}
public class classDemo3 {
	public static void main(String[] args) {
//		Student stu = new Student();
//		stu.tell();
		new Student().tell();	//匿名对象,只使用一次
	}
}

6.构造方法

6.1格式

访问修饰符 类名称(){
    程序语句;
}

6.2举例

package com.hanqi.classdemo;

class People{
	//创建构造方法
	public People(){
		System.out.println("执行构造方法");
	}
}
public class classDemo4 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		People hanqi = new People();
	}
}
package com.hanqi.demo1;

class People{
	int age;
	String name;
	public People(int age, String name) {
		this.age = age;
		this.name = name;
		System.out.println("姓名:"+name+"\n年龄:"+age);
	}
}
public class test01 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		People per = new People(28, "王大翠");
	}
}
package com.hanqi.demo1;

class People{
	int age;
	String name;
	public People(int age, String name) {
		this.age = age;
		this.name = name;
		System.out.println("姓名:"+name+"\n年龄:"+age);
	}
	public People(int age) {
		this.age = age;
		System.out.println("年龄:"+age);
	}
}
public class test01 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		People per = new People(28);
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
年龄:28

7.子类对象实例化

7.1注意

package com.hanqi.demo1;

class Father{
	private int age;
	private String name;
	public Father() {
		System.out.println("父类构造方法");
	}
}
class Son extends Father{
	public Son() {
		System.out.println("子类构造方法");
	}
}
public class test04 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Son s = new Son();
	}

}
/////////////////////////////////////////////////////////////////////////////////////////////////////
父类构造方法
子类构造方法

标签:java,name,构造方法,int,age,J3,面向对象,void,public
来源: https://www.cnblogs.com/Meiyangyang945/p/15106558.html