Java教程

Java入门教程笔记(四)

本文主要是介绍Java入门教程笔记(四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java入门教程笔记(一)

Java入门教程笔记(二)

Java入门教程笔记(三)

因为昨天一直在搞那个德扑模板,所以今天写第四份笔记

一、对昨天的补充
1、访问权限修饰符
(1)类的修饰符
public:任何一个包内都能用
friendly(等同于前面没有修饰符的情况):只有本包内能够使用
(2)变量修饰符
public: 任何其它类、对象都可以访问public修饰的属性和方法
protected:同一类,同一包可以使用。不同包的类B要使用类A,必须满足类A是可见的(public),类B是类A的子类这一条件
friendly(等同于前边没有修饰符的情况):在同一程序包中出现的类才可以直接使用它修饰的数据和方法
private:不允许任何其他类存取和调用
一个更加直观的图:
在这里插入图片描述
2、类常量:
被final修饰符修饰的对象
例如:

public static final int UNKNOEN = 99
public static final DAYS = 365;
public final double RATE = 10.0;

3、main方法
用于执行的java文件中必须有一个main方法

public static void main(String[] args)

使用小黑窗执行以下指令
c:>java User one two three时
args[0] = “one” args[1]=“two” args[2] = “three”;

还漏了两份作业······在下一篇笔记里面提一下吧

二、继承

两个类,子类继承父类,具备一部分和父类一样的属性和方法(被public,private,friendly修饰的),并可能有一些不同于父类的属性或方法
1、重写和重载
重写(Overriding):子类继承父类的方法时改写此方法(方法名称、参数表都不变)。
重载(Overloading):多个方法同名,但是其参数的个数、
类型、顺序有所不同
2、super关键字
当父类的方法被子类覆盖的时候,如果需要重新调用父类的方法或者属性可以用super关键字
3、构造方法
在创建新的子类对象时,首先调用父类的构造方法 super()(系统默认执行参数表为空的构造函数)。这个过程会反复的进行,直到继承链的最顶层
如果父类中没有参数表为空的构造函数就会报错,我们可以用super自己调用设定好的构造函数
例如
Person.java

package first;

public class Person {

	protected int age;
	protected String name;
	public Person(String n,int a)
	{
		name = n;
		age = a;
	}
	void myInfo()
	{
		System.out.println(name+","+age+"岁");
	}
}

Student.java

package first;
import java.util.*;
public class Student extends Person{

	String major;
	public Student(String n,int a,String m)
	{
		super(n,a);
		//name = n;
		//age = a;
		major = m;
	}
	public void print()
	{
		myInfo();
		System.out.println("攻读专业为"+major);
	}
	public static void main(String[] args)
	{
		Student a[] = new Student[10];
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		for(int i=1;i<=n;i++)
		{
			a[i]=new Student(in.next(),in.nextInt(),in.next());
		}
		for(int i=1;i<=n;i++)
			a[i].print();
	}
}

4、与C++不同,任何一个类的父类是唯一的
由final修饰的方法可以被继承,但是不能被重写
5、upcasting(向上转型)

Person p1 = new Person();
Student s1 = new Student();
//class Student extedns Person
p1 = s1;//可
s1 = p1;//不可
//子类变量可以上接父类,父类变量不能上接子类(懂意思就行)

upcasting之后,还可以通过强制转型转回原来的子类
但是upcasting之后不能使用原来子类特有的方法

安全的向下转型

if(p instanceof Student)
s = (Student)p; // 经过判断之后可以进行向下转型

upcasting之后,调用父类的在该子类中被重写过的方法,编译器会选择子类中那个重写过的方法执行,不执行父类中的那个

6、动态绑定
父类和子类可以具有名称和signature完全相同,但是内容不同的两个static方法。在子类中,父类的方法被子类的方法隐藏
被隐藏的父类中的静态方法不能够从子类中访问。
Static修饰的方法是可以在子类中继承的,但是在执行upcasting之后,静态方法不会出现动态绑定的现象

这篇关于Java入门教程笔记(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!