下面是自己学习java以来的一些小的总结,可能有些错误,望您多多指点!!!
1 . final变量 定义以后就要赋值
package one;
public class A
final int age=23;
}
下面讨论的是继承的问题:
2
package one;
public class A {
public void getRun(){
System.out.println("我是一个普通方法!");
}
}
package one;
public class B extends A{
public static void main(String args[])
{
B b=new B();//非静态方法,,所以先实例化,然后才能调用!!
b.getRun();
}
}
3
package one;
public class A {
public static void getRun(){
System.out.println("我是一个静态方法!");
}
}
package one;
public class B extends A{
public static void main(String args[])
{
B.getRun();//主方法里面是静态方法,所以不用实例化,直接就可以调用 了!
}
}
4
java里默认的类是public所以变量是public ,而C#里默认的类是private所以变量也是private
5
如果
package one;
public class A {
private static void getRun(){
System.out.println("我是一个静态方法!");
}
}
后面的
public class B extends A{
public static void main(String args[])
{
B.getRun();//出现Exception
}
}
只有是public ,protect,或者默认的才不会出现Exception.
5
protected 和 **ult的区别!!
主要是访问权限的区别:
protected修饰的方法 只有他的子类(同包或异包)以及在同一包下面的类可以访问.
default修饰的方法 一定得同一包下面的类才能访问,如果是它不同包下的子类都不能对其方法进行范围的!
package one;
public class A {
static void getRun(){
System.out.println("我是一个静态方法!");
}
}
package two;
import one.A;
public class B extends A{
public static void main(String args[])
{
B.getRun();//出现Exception
}
}
6 java里的void ~~~
package one;
public class A {
public void getRun(){ //没有返回值,所以定义为void
System.out.println("我是一个普通的方法!");
}
public int getMax(int a,int b){ //有返回值,并且返回值类型为int
int max=a>b?a:b;
return max;
}
}
7 实例直接调用!
package one;
public class A {
public void getRun(){
System.out.println("我是一个普通的方法!");
}
public int getMax(int a,int b){
int max=a>b?a:b;
return max;
}
public static void main(String args[]){
new A().getRun(); //相当于A a=new A(); a.getRun();
}
}
8 接口interface与抽象类abstract
只要是抽象类,里面是一定是抽象方法,抽象方法是可以去实现的.
而接口类似于抽象类.里面是抽象方法是不能实现的,必须通过另外
类去实现(implements)这个接口.然后实现接口里面的所有抽象方法.
两者都不能继承...
package one;
public interface C {
public void getRun(){
//这里是错误的,不能去实现接口里的方法,只能定义.
}
}
正确的是:
package one;
public interface C {
public void getRun();
}
定义一个类implements 接口C
package one;
public class D implements C {
public void getRun() {
//
}
}
抽象类:
下面的代码是错误的.
package one;
public abstract class E {
public void getRun() {
System.out.println("我喜欢跑步");
}
public static void main(String args[]){
new E.getRun();
}
}
正确的代码如下:
package one;
public abstract class E {
public static void getRun() {
System.out.println("我喜欢跑步");
}
public static void main(String args[]){
E.getRun();
}
}
9.封装类.
// 用户类
class User {
// 用户类的成员变量(分别对应User表中的属性)
private String name;
private String password;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// ... 其他变量也定义Getter()和Setter()方法。
}
// 用户数据控制类
class UserTest {
public static void main(String[] args) {
// 定义一个用户对象,且初始化
User u = new User();
u.setName("zhangsan");
u.setPassword("123456");
u.setEmail("zhangsan@163.com");
// 直接传User类的对象就可以了。
// 中间经过的类不用关心User类每个属性。
// 调用其他类,传递这个类
UserDB ud = new UserDB();
ud.save();
}
}
// 负责保存到数据库的类。
class UserDB {
// 保存到数据库。
public void save(User u) {
// 这里就可以得到User类里的所有要保存的数据了。
// 保存。。。
}
}
取的时候就更简单了,取出来的时候包装成一个User对象。
那么,想要什么取什么。